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
- 传统的管理员对服务器的管理
管理员通过远程登陆的方式,对通过网相连的分散于各处的多台主机进行管理操作。
-
管理员对远程主机进行如下操作:
- 远程登陆
- 远程命令执行
- 远程文件传输
遗憾的是这些操作不安全:
- 使用纯文本口令,并用明文发送
- 信息可能会被截取,口令可能会被检索
- 未经授权的人员使用截取的口令登陆系统而对系统造成危害
- SSH的目标
在不安全的网络上提供安全的网络服务。
2.2 安装ssh
- 安装
- CentOS
# 检查openssh-server、openssh-clients是否已经安装
rpm -qa | grep openssh-server
rpm -qa | grep openssh-clients
# 安装
yum install -y openssh-server openssh-clients
- 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
的使用手册。
- 生成秘钥
在本地主机或者跳板机上生成密钥和公钥:
ssh-keygen -t rsa
ssh-keygen -t rsa
生成密钥之后,会在当前用户的根目录生成一个 .ssh
的文件夹。
进入.ssh
会生成以下3个文件:
- id_rsa
生成的私钥文件 - id_rsa.pub
生成的公钥文件 - known_hosts
已知的主机公钥清单 - authorized_keys(Client主机上可以没有)
存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
- 将公钥传输到远程主机上
将公钥传输到远程主机上,有两种方式: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]
scp将公钥写到远程主机文件中
命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
- ssh免密登录
- ssh免密登录
命令:ssh [ip/hosts]
- 退出登录
命令: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公钥生效需满足至少下面两个条件:
- .ssh目录的权限必须是700
- .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.”
在主机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