Linux通过ssh密匙登录

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 <用户名>@:/home/id_rsa.pub

如果修改了ssh默认连接端口的话,需要加上端口信息:

scp -P <端口号> ~/.ssh/id_rsa.pub <用户名>@:/home/id_rsa.pub

把公钥追加到服务器ssh认证文件中:

cat /home/id_rsa.pub >> ~/.ssh/authorized_keys

如此便完成了公钥的安装。

为了确保连接成功,请保证以下文件权限正确:

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文件里面

  • 参考:
    https://blog.csdn.net/qq_39626154/article/details/82495824
    https://blog.csdn.net/ternence_hsu/article/details/106420699

你可能感兴趣的:(Linux通过ssh密匙登录)