Linux ssh免密登录

作者: Jerry_1116 | 来源:发表于2019-05-26 12:13 被阅读6次

1 配置hosts文件

命令:vi /etc/hosts
在文件尾部添加

192.168.1.106 linux1
192.168.1.107 linux2
192.168.1.108 linux3
192.168.1.109 linux4

2 安装ssh

2.1 什么是ssh

  1. 传统的管理员对服务器的管理
  • 管理员通过远程登陆的方式,对通过网相连的分散于各处的多台主机进行管理操作。

  • 管理员对远程主机进行如下操作:

    • 远程登陆
    • 远程命令执行
    • 远程文件传输

    遗憾的是这些操作不安全:

    • 使用纯文本口令,并用明文发送
    • 信息可能会被截取,口令可能会被检索
    • 未经授权的人员使用截取的口令登陆系统而对系统造成危害
  1. SSH的目标
    在不安全的网络上提供安全的网络服务。

2.2 安装ssh

  • 安装
  1. CentOS
# 检查openssh-server、openssh-clients是否已经安装
rpm -qa | grep openssh-server
rpm -qa | grep openssh-clients
# 安装
yum  install -y openssh-server openssh-clients
  1. Ubuntu
# 检查openssh-server、openssh-clients是否已经安装
dpkg -l | grep openssh-server
dpkg -l | openssh-clients
# 安装
apt install -y openssh-server openssh-clients
- 启动ssh
```shell
service sshd start 或 /etc/init.d/sshd start
  • 配置开机启动
chkconfig --level 2345 sshd on

3 ssh免密登录

通过man ssh-keygen命令查看ssh-keygen的使用手册。

  1. 生成秘钥
    在本地主机或者跳板机上生成密钥和公钥:
ssh-keygen -t rsa
ssh-keygen生成密钥过程

ssh-keygen -t rsa生成密钥之后,会在当前用户的根目录生成一个 .ssh的文件夹。

ssh-keygen -t rsa生成的.ssh文件夹

进入.ssh会生成以下3个文件:

  • id_rsa
    生成的私钥文件
  • id_rsa.pub
    生成的公钥文件
  • known_hosts
    已知的主机公钥清单
  • authorized_keys(Client主机上可以没有)
    存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
  1. 将公钥传输到远程主机上
    将公钥传输到远程主机上,有两种方式:ssh-copy-id安装和scp直接传输。
  • ssh-copy-id安装
    ssh-copy-id 是一个使用ssh去登陆到远程服务器的脚本,可以把本地的ssh公钥文件安装到远程主机对应的账户下,具体是将你的公钥填充到一个远程机器上的~/.ssh/authorized_keys文件中。
    命令:ssh-copy-id -i ~/.ssh/id_rsa.pub [ip/hosts]

    ssh-copy-id远程主机安装公钥
  • scp将公钥写到远程主机文件中
    命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys

  1. ssh免密登录
  • ssh免密登录
    命令:ssh [ip/hosts]
    ssh免密登录
  • 退出登录
    命令:exit

4 常见问题

4.1 登录依然需要密码,用户名不对

直接使用ssh {ip/hosts},会显示当前系统的用户名@目标主机的名称,例如,当前用户为user,使用ssh linux1,登录之后显示为user@linux1,与linux1实际的用户名称不相符,从而还需要输入密码,不能实现免密登录。假设linux1的用户名为root,此时,无论你当前的用户名是什么,通过ssh root@linux1即可免密登录linux1主机。
但是这样,依然很不方便,需要输入很多的命令来登陆linux1主机。
假设你的用户名为user,已经设置好了密钥登录主机linux1(linux1的用户名为root)。那么你可以在shell的配置文件(比如.bashrc)里定义一个命令别名alias:alias linux1='ssh root@linux1'。以后每次你启动shell终端后,输入linux1,回车,直接就ssh登陆到主机linux1上。

4.2 远程主机已经配置完但一直不生效

配置远程主机linux1用户root的公钥登录时,配置完authorized_keys居然一直不生效。可能的原因之一是:
远程主机~/.ssh及其下面文件的权限问题导致的,因为目录的权限已经超过了sshd的要求权限。如果希望ssh公钥生效需满足至少下面两个条件:

  1. .ssh目录的权限必须是700
  2. .ssh/authorized_keys文件权限必须是600
r=4
w=2
x=1 

4.3 Agent admitted failure to sign using the key.

主机A登录远程主机linux1时,可能出现问题:
自动登陆会失效:“Agent admitted failure to sign using the key.”

Agent admitted failure to sign using the key错误
在主机A使用 ssh-add 指令将私钥 加进来 (根据个人的密匙命名不同更改 id_rsa):
ssh-add ~/.ssh/id_rsa

4.4 Could not open a connection to your authentication agent

如果报Could not open a connection to your authentication agent.
则执行命令:
ssh-agent bash --login -i

Could not open a connection to your authentication agent错误

参考

  1. linux 安装ssh以及ssh用法与免密登录
  2. Linux ssh密钥自动登录 专题
  3. Debugging SSH public key authentication problems

相关文章

网友评论

    本文标题:Linux ssh免密登录

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