SSH 免密码登录
这里即A机想通过ssh免密码登录到B机。ssh 无密码登录需要使用到公钥和私钥。一般是在A机上生成公钥/私钥对,然后将公钥添加到B机中。
- A机:自己的电脑
- B机:需要远程登录的客户端或服务器
首先需要在A机下生成公钥/私钥对
ssh-keygen -t rsa -f id_rsa -P ''
参数:-f 生成的文件名 -P 表示密码,-P ” 表示空密码,会在 .ssh 目录下生成 id_rsa 和 id_rsa.pub。
注:因为在我的 .ssh 目录下还有其他公钥/私钥对,例如用来连接github的公钥/私钥对,如果你也有其他公钥/私钥对,为了不发生混淆,建议进行了重新命名。如果重命名了,则不会生成在 .ssh 目录中,就需要手动把 id_rsaxxx 私钥文件(不带.pub后缀)移动到当前用户的 .ssh 目录下。
将产生的公钥(xxxxx.pub)复制到 B机的用户目录下,可以采用各种方式,以下用 scp 举例:
scp xxxxx.pub username@IP:/home/username/xxxxx.pub
将公钥追加到 authorzied_keys 中,可以通过A机使用密码登录B机(或直接在B机上操作),之后需要重启B机的sshd服务;
远程登录命令:
ssh username@IP
追加公钥到authorzied_keys中:
cat xxxxx.pub >> .ssh/authorized_keys
通过以下命令重启:
service sshd restart
注:authorzied_keys 的权限要是 600 。
注:如果是服务器,最好把密码登录关闭。并在A机上测试
如果是默认的文件名,则可以去掉 -i 参数(用于指定私钥文件位置)
ssh -i "私钥文件路径" user@hostname
SSH 利用config管理会话
SSH 利用config管理会话(无需通过命令指定私钥、端口等参数登录)。当有多个私钥时,管理和操作会变复杂。使用 ssh 时需要通过 -i 指定私钥文件,比较麻烦。可以通过在 .ssh 目录下新建一个 config 文件来进行管理。
新增ssh的配置文件config,并修改权限,
touch ~/.ssh/config chmod 600 ~/.ssh/config
配置内容如下:
Host 别名 Hostname 主机名 Port 端口 User 用户名
例如:
Host github.com IdentityFile ~/.ssh/id_rsa_for_github User git
SSH 会话保活
当你使用ssh命令连接公司服务器时,很有可能会出现闲置一段时间后,被服务器自行断开的情况,这可能是运维部门的安全策略。但这种被动断开很可能会影响到自己的工作上下文。
在配置文件 config 中,意思为每30秒发送一个no-op包,通过心跳保活。
Host * ServerAliveInterval 30