Linux 系统实现 SSH 连接的 3 种 方式
- 密码登入
- 公钥登入
- 私钥登入
登入前提
- 服务端安装好 ssh 服务, openssh-server
- 客户端与服务器端均要拥有 ssh-key,可以使用命令
ls ~/.ssh/
来查看是否拥有id_rsa
与id_rsa.pub
文件,如果没有同时拥有这两个文件,那就执行命令ssh-keygen
并持续按回车键生成它们 - 前提假设 :客户端 A 远程连接服务端 B,A 的 IP 等于
10.10.10.104
,B 的 IP 等于172.19.0.2
方式一:密码登入
原理:执行远程连接命令并输入账号密码
- 客户端 A 连接服务端 B,客户端 A 中执行命令
ssh root@172.19.0.2
去连接 B。命令中的 root 是服务端 B 的用户名 - 接着就是输入密码即可
方式二:公钥登入(免密登入)
原理:注入公钥到服务端,表示拥有该公钥的客户端可以免密登入
- 将客户端 A 的公钥
~/.ssh/id_rsa.pub
复制到服务端 B 的授权Key文件~/.ssh/authorized_keys
中。可采用手动方式,也可以在客户端 A 执行命令ssh-copy-id root@172.19.0.2
来实现 - 在客户端 A 执行命令
ssh 172.19.0.2
即可实现免密登入
方式三:秘钥文件登入
原理:客户端每次登入时携带服务端秘钥来登入
- 将服务端 B 的私钥
~/.ssh/id_rsa
复制到客户端 A 中,假设放在~/.ssh/b_id_rsa
,并修改权限为只读。在客户端 A 中执行命令chmod 400 ~/.ssh/b_id_rsa
来修改权限 - 在客户端 A 执行命令
ssh -i ~/.ssh/b_id_rsa root@172.19.0.2
即可实现登入
提示:
- 如果服务端 B 的 ssh 服务所监听的端口不是 22 ,假如是 33,那么在客户端 A 连接时,需要加上
-p 33
来连接。比如:ssh -p 33 root@172.19.0.2