ssh登录Linux通常有两种方法:用户名密码登录、用户名公钥登录;使用用户名密码登录每次都要输入密码,相当麻烦,而使用用户名公钥登录则可以避免这个问题。
创建公钥私钥文件
打开本地终端,执行 ssh-keygen 命令创建密钥对:
ssh-keygen -t rsa -C 'email#domain.com'
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱,可以省略
生成过程中会提示输入密码两次,如果不想在使用公钥的时候输入密码,可以回车跳过;
密钥默认保存位置在 ~/.ssh 目录下,打开后会看到私钥文件 id_rsa 和公钥文件 id_rsa.pub;
复制公钥至服务器
使用 scp 命令将本地的公钥文件 id_rsa.pub 复制到需要连接的Linux服务器:
scp ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub
如果修改了ssh默认连接端口的话,需要加上端口信息:
scp -P <端口号> ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub
把公钥追加到服务器ssh认证文件中:
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
如此便完成了公钥的安装。
<p style="font-family: ;color:red ;font-size:10 px;text-align: ;">为了确保连接成功,请保证以下文件权限正确:</p>
chmod 600 authorized_keys
chmod 700 ~/.ssh
设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录,默认为yes:
PermitRootLogin yes
当我们完成全部设置并以密钥方式登录成功后,可以禁用密码登录。这里我们先不禁用,先允许密码登陆
PasswordAuthentication yes
最后,重启 SSH 服务:
service sshd restart
ssh自动添加know_hosts记录
当ssh一台没登陆过的机器的时候,往往需要输入yes,确认一下添加know_hosts文件,在一些脚本处理的时候很不方便,可以修改/etc/ssh/ssh_config 文件达到自动添加,注意是ssh_config,不是sshd_config
查找# StrictHostKeyChecking ask 修改为
StrictHostKeyChecking no
这样就可以达到自动添加know_hosts~~
以上总结
简单来说就是把本地ssh-keygen生成的id_rea.pub公钥添加到服务器~/.ssh/authorized_keys文件里面