美文网首页
远程 SSH 登录服务器

远程 SSH 登录服务器

作者: 娃哈哈喜之郎 | 来源:发表于2020-01-11 18:48 被阅读0次

对于新安装的 Centos7 系统,默认情况下,我们是只能通过账号和密码登录的。问题主要是在我们每次登录都需要输入密码,会很麻烦,最好能一键登录。

为了能够实现免密登录,我们需要非对称加密过的公私密钥配对,来授权用户登录。

我们可以通过 ssh-keygen 这个命令,在当前用户的目录下生成 .ssh 目录,其中会包含两个文件,如下:

  • id_rsa
  • id_rsa.pub

第一个是私钥,不可以轻易发送给其他人,第二个公钥,是需要放到目标服务器上的。

通过以下命令生成

ssh-keygen -t rsa -C '1399020825@qq.com'

其中 -t 表示算法类型,这里默认选用 rsa,-C 是 comment 的缩写,表示备注,非必填。

接下来,只需要将本地的 ~/.ssh/id_rsa.pub 中的文本,拷贝到服务器上的 ~/.ssh/authorized_keys 文件中

默认情况下,是无法通过指定 id_rsa 里登录服务器,我们需要改下 ssh 服务的配置文件,文件位于服务器上 /etc/ssh/sshd_config,编辑该文件,将其中对 PubkeyAuthentication yes 的注释去掉 。

PubkeyAuthentication yes

然后记得重启 ssh 服务

systemctl restart sshd

接下来,我们就可以通过指定 id_rsa 来登录目标服务器了

ssh -i ~/.ssh/id_rsa user@host:port

其中的 -i 参数表示:identity_file,用来指定本地的私钥 id_rsa,user 是你即将登录的用户,如 root,host 是目标服务器对应的 ip 地址,port 默认是 22,可以缺省。

遇到的问题

如果不是 root 用户登录的话,比如我用的自己创建的用户 allen,会发现及时按照上述的操作执行完,还是每次都提示输入密码。

可以使用 tail 命令查看系统的日志文件,看看其中的错误信息

tail /var/log/secure -n 20

tail 英文单词是表示尾巴的意思,在这里的作用的是用于查看文件中的尾部内容,其中 -n 参数,表示文件尾部多少行内容。

发现其中的错误信息如下

Authentication refused: bad ownership or modes for file

大概表示目录或文件的权限配置不当,通过搜索得知,原来是 ssh 不希望 home 目录和 ~/.ssh 目录对组有写权限,当前用户的 home 目录只能对当前用户有写权限,~/.ssh 目前权限应该是 700, 以及 authorized_keys 文件的权限应该是 600。

可以通过 chmod 命令来修改权限

chmod g-w /home/allen
chmod 700 /home/allen/.ssh
chmod 600 /home/allen/.ssh/authorized_keys

现在我们再去登录,就不在提示输入密码。

如果这篇文章对您有帮助,记得给作者点个赞,谢谢!

相关文章

网友评论

      本文标题:远程 SSH 登录服务器

      本文链接:https://www.haomeiwen.com/subject/xblbactx.html