一、配置 ssh
1、安装 ssh
yum install -y openssl openssh-server
yum -y install openssh-clients
2、修改 ssh 配置文件
vi /etc/ssh/sshd_config
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登录
3、启动 sshd 服务
使用下面命令,避免在 docker 容器里使用 systemctl 命令报错
docker run -tid --name centos_1 --privileged=true centos:latest /sbin/init
systemctl status
● 31d2c8e4437a
State: degraded
系统可控,但是存在失败单元。
systemctl start sshd
systemctl enable sshd
4、修改远程容器密码
修改root密码
yum install -y passwd
passwd root
5、密码登录
ssh 172.17.0.3
ssh 登录时不指定用户,将默认以当前本机相同用户名登录远程
二、免密登录
客户端 centos1:172.17.0.2
服务端 centos2:172.17.0.3
1、客户端生成公私钥匙
若已经生成,则不必重复生成。
ssh-keygen
ssh-keygen -t rsa # 指定类型
ssh-keygen help
ls /root/.ssh/
id_rsa id_rsa.pub
2、传递公钥到服务端
(1)方法一:单独拷贝 id_rsa.pub 文件到服务端命名为 authorized_keys。
注意除了 u 用户,服务端 .ssh 目录和 authorized_keys 文件的 g 和 o 用用户都不能有写权限,否则登录仍然需要密码,可执行如下权限操作处理
chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys
或者
chmod go-w -R /root/.ssh
(2)方法二:使用命令 ssh-copy-id 172.17.0.3 传递公钥,需要输入一次服务端用户密码。
查看客户端
ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
查看服务端,可以发现自动增加了 authorized_keys 文件
ls /root/.ssh/
authorized_keys
3、免密登录
ssh 172.17.0.3
4、别名登录
别名代替ip,客户端新建 root/.ssh/config 文件,内容为
centos2
HostName 172.17.0.3
Port 22
User root
IdentityFile ~/.ssh/id_rsa
ssh centos2
5、指定私钥文件登录
对于私钥文件名不是 id_rsa 的,如为 id_rsa_copy 可以使用 -i 参数指定私钥名称
ssh -i ~/.ssh/id_rsa_copy root@172.17.0.3
参考地址:https://blog.csdn.net/xoofly/article/details/99770357
三、公私钥与登录原理
1、公私钥
公钥:相当于一把锁,要送给登录目标
私钥:相当于一把钥匙,自我持有
典型的非对称加密算法:RSA
非对称算法有一对密钥,对称算法只有一把密钥
公私钥成对存在
公钥加密的文件,只能有私钥来解密;
私钥加密的文件,只能有公钥来解密。
2、登录原理
(1)客户端登录服务端
(2)服务端发送一个字符串
(3)客户端加密字符串,返回给服务端
(4)服务端用公钥解密返回的字符串等到新串,比对原串与新串,一样则可登录
四、多级互相访问配置
在单个机器上生成秘钥和授权秘钥,然后分发给其他机器,即可实现相互免密访问。
1、生成密钥
ssh-keygen -t rsa # 生成密钥对
cat ~/.ssh/id_rsa >> ~/.ssh/authorized_keys # 生成授权秘钥
2、分发秘钥
scp ~/.ssh/id_rsa 172.17.0.3:~/.ssh/id_rsa
scp ~/.ssh/id_rsa_pub 172.17.0.3:~/.ssh/id_rsa_pub
scp ~/.ssh/authorized_keys 172.17.0.3:~/.ssh/authorized_keys
或者
scp -r ~/.ssh 172.17.0.3:~/.ssh
五、调试
ssh 172.17.0.3 -vvv
vi /var/log/secure