通常利用 ssh 连接远程服务器,一般都要输入以下类型命令:

  ssh user@hostname -p port

如果拥有多个ssh账号,特别是像我这种喜欢在终端里直接ssh登录,
要记住每个ssh账号的参数,那是多么蛋疼的事情。

还好,ssh提供一种优雅且灵活的方式来解决这个问题,就是利用
ssh的用户配置文件config 管理 ssh 会话。ssh的用户配置文件是
放在当前用户根目录下的.ssh 文件夹里(~/.ssh/config, 不存在则新
创建一个), 其配置写法如下:

  Host 别名
HostName 主机名
Port 端口
User 用户名
IdentityFile 密钥文件的路径

有了这些配置,就可以这样用ssh 登录服务器了:


ssh 别名

生成公钥和密钥

但是使用这种方式的前提是,必须生成密钥,并且将密钥添加到服务器的
authorized_keys文件里。

使用密钥的好处就是省去每次ssh登录服务器时都要输入登录密码的操作,

这里使用ssh-keygen 生成ssh密钥。

  • 在 ~/.ssh/目录下执行

      ssh-keygen -t rsa

    直接一路回车即可
    最后会生成 id_rsa 的私钥,和 id_rsa.pub 的公钥。

  • 把公钥中的内容复制到 authorized_keys 文件中,不存在则新创建一个

      scp ./id_rsa.pub user@remote_ip:~/.ssh/id_rsa_1010.pub

    然后登录到远程服务器,把公钥 id_rsa_1010.pub 的内容复制到 authorized_keys 文件里

      cat id_rsa_1010.pub >> authorized_keys

    以ssh public key 的形式访问,对当前用户根目录的.ssh 文件夹里的目录文件是要
    有一定的权限要求,之前遇到过ssh public key 配置好了,不过用public key 登录验证时
    无效。所以,最好设下.ssh 目录权限为700,authorized_keys 权限为600.

如果authorized_keys 不为 600的话,ssh就登录不上去。即使所有的配置都正确。

  chmod 700 ~/.ssh/
chmod 600 authorized_keys

当然,用密钥的方式连接服务器是需要服务器上的ssh支持的,需要ssh的配置文件(默认是在/etc/ssh/sshd_config)
里的 PubkeyAuthentication设置为yes.如果要改登录的端口,直接把Port改成你想到的端口值就行。
修改完后重启下ssh,配置就生效:

  /etc/init.d/ssh restart
  • 最后本地的config 如下

      Host cjb
    HostName 216.194.70.6
    Port
    User user
    IdentityFile ~/.ssh/cjb

    配置完成之后,就可以在终端直接输入 ssh cjb 畅通无阻地连上远程的cjb服务器上了。

  备忘:

1 有时候ssh登录报错:

Unable to negotiate with 192.168.8.109 port 22: no matching host key type found. Their offer: ssh-dss
解决方法:
Host alias
HostName 192.168.8.109
HostKeyAlgorithms=+ssh-dss

使用config 来管理ssh的会话的更多相关文章

  1. 利用 ssh 的用户配置文件 config 管理 ssh 会话

    http://dhq.me/use-ssh-config-manage-ssh-session 利用 ssh 连接远程服务器,一般都要输入以下类似命令: 1 ssh user@hostname -p ...

  2. 利用ssh的用户配置文件config管理ssh会话

    通常利用 ssh 连接远程服务器,一般都要输入以下类似命令: ssh user@hostname -p port 如果拥有多个 ssh 账号,特别是像我这种喜欢在终端里直接 ssh 登陆,不用 PuT ...

  3. Linux基础知识第六讲,远程管理ssh操作

    目录 Linux基础知识第六讲,远程管理ssh操作 一丶什么是SSH 1.什么是SSH 2.了解域名跟端口 二丶SSH命令以及远程连接linux进行维护 1.ssh命令格式 2.scp远程终端拷贝文件 ...

  4. 第二十三章 多项目集中权限管理及分布式会话——《跟我学Shiro》

    二十三章 多项目集中权限管理及分布式会话——<跟我学Shiro> 博客分类: 跟我学Shiro 跟我学Shiro  目录贴:跟我学Shiro目录贴 在做一些企业内部项目时或一些互联网后台时 ...

  5. 配置ssh连接会话复用免密码登录

    我们经常使用ssh连接远程主机,为了方便,避免每次登录输入密码,通常使用密钥登录.如果没有设置密钥, 则需要使用密码登录了,若每次都输入密码则十分繁琐.我们可以设置ssh连接会话复用,则登录成功后,会 ...

  6. 9.Spring Cloud Config统一管理微服务配置

    Spring Cloud Config统一管理微服务配置 9.1. 为什么要统一管理微服务配置 9.2. Spring Cloud Config简介 Spring Cloud Config为分布式系统 ...

  7. 使用Spring Cloud Config统一管理配置,别再到处放配置文件了

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 可配置是一个成熟软件系统应该提供的特性,而配置管理对于大型系统就显得十分重要,特别是对于拥有多个应用的微服务系统.可喜的是, ...

  8. spring cloud config center Git SSH configuration

    Git SSH configuration using properties By default, the JGit library used by Spring Cloud Config Serv ...

  9. ssh的用户配置文件config管理ssh会话

    抄的这个: https://www.cnblogs.com/zhonghuasong/p/7236989.html 只是在这里留个存档,防止删除 我有这样的需求就是,因为需要ssh连接到服务器,然后每 ...

随机推荐

  1. 网站加入QQ在线客服

    <!-- qq客服 --> <div class="QQFloat" > <div class="qq"> <div ...

  2. Blob分析--粘连颗粒检测 基于距离变换的分水岭区域分割 盆地与原连通域求交集

    文章转自微信公众号:机器视觉那些事 *******************************************************************公众号:机器视觉那些事儿*** ...

  3. grabcut mask

    #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src = imread("E:\ ...

  4. Linux之 Ngnix

    前言: WEB框架 django 大而全, 功能特别多 form表单 , ORM, 中间件 笨重,臃肿 600/s flask 轻量级的,小而精, 它使用的都是第三方模块进行拼接起来的 4988/s ...

  5. 29.Mysql监控

    29.Mysql监控29.1 如何选择一个监控方案 29.1.1 选择何种监控方式 29.1.2 如何选择合适自己的监控工具29.2 常用网络监控工具 29.2.1 Cacti简介 29.2.2 Na ...

  6. day 5,格式化输出,for,while, break,continue,列表

    本节内容: 1,格式化输出 2,数据类型 3,for 循环 4,while 循环 5,列表 pycharm的简单使用,设置pycharm自动生成日期和计算机用户名 ctrl+d复制一行 1,格式化输出 ...

  7. java多线程系列9 高级同步工具(3) CyclicBarrier

    CyclicBarrier 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)   然后一再执行 public class CyclicBar ...

  8. I/O dempo

    标准读取写入 package io_stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; i ...

  9. JSP内置对象application

    application对象实现了用户间数据的共享,可存放全局变量 application开始于服务器的启动,终止于服务器的关闭 在用户的前后连接或不同用户之间的连接中,可以对application对象 ...

  10. javascript Date对象扩展相关function

    本篇均以es5为主: 1,月份加减来推日期 // 根据所给月份往后推出日期 function getMonth(count) { var date = new Date(); var year = d ...