ssh登录
wenking 7/11/2023 ssh
# ssh-copy-id
把本地的ssh 公钥 安装到远程主机对应的账户上(authorized_keys文件中)。
当我们第一次 ssh root@192.168.1.6
连接远程主机时,如果主机信息没有记录在 本地的 known_hosts 文件中, 将询问你是否获取远程主机的公钥,
如果输入 yes, 则会将远程主机的公钥 添加到 known_hosts文件中。
# ssh-copy-id -i "公钥文件位置" "远程主机"
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.217
1
2
3
2
3
以该命令为例: ssh-copy-id -i /root/.ssh/rsa_key.pub root@192.168.1.217
, 具体执行流程: 会将本台主机指定
的公钥文件安装到 远程主机 root用户的 /root/.ssh/authorized_keys 文件中。下次登录时 ,远程主机中拥有公钥, 登录时只需指定私钥文件即可进行
免密登录
# ssh相关文件
文件 | 作用 |
---|---|
authorized_keys | 我们需要本地机器ssh访问远程服务器时为了减少输入密码的步骤,基本上都会在本地机器生成ssh公钥,然后将本地ssh公钥复制到远程服务器的.ssh/authorized_keys中,这样就可以免密登录了。 |
known_hosts | 第一次连接远程数据库时我们可以发现我们本地的.ssh/目录下多了一个文件known_hosts,里面有我们刚刚连接的服务器的信息(如果以前就存在known_hosts,则会发现多了刚刚连接的服务器的信息)。 |
# ssh登录
SSH
的全称为Secure Shell
,即安全外壳协议。它是一种专为远程登陆会话和网络服务提供安全性的应用层协议;主要功能是安全的连接到服务器。
# ssh登录方式
- 口令验证登录
- 服务器生成公钥和私钥
- 客户端发起连接请求,服务器将公钥发给客户端
- 客户端输入口令(服务器密码),并用服务器发来的公钥加密,发送给服务器
- 服务器通过私钥解密,拿到口令(服务器密码)
- 如果正确则认证成功
这种方式是我们管理但机器最常用的ssh连接远程服务器的方式,优点是无需进行额外的配置;但缺点是需要记住服务器主机的密码,并且第一次建立连接时需要手动接收服务器证书。
密钥验证登录
- 客户端生成公钥和私钥,将公钥提前部署在服务器上
- 客户端发起连接请求
- 服务器随机生成一个字符串,使用本地的公钥加密,发送给客户端
- 客户端通过私钥解密,将解密后的字符串发送给服务器
- 服务器验证本地字符串和客户端发来的字符串的一致性,如果通过,则认证成功
这种方式连接的前提是服务器需要有客户端公钥,优点是不需要记住服务器密码,适合大规模集群管理
客户端密钥对可以通过ssh-keygen
生成,然后使用ssh-copy-id
将公钥拷贝到服务器上
# 使用
使用密钥的方式登录时, 客户端密钥一般存放在服务器的~/.ssh/authorized_key
目录中(其中~
指的是客户端登录服务器时指定的用户名),用户在登录的时候指定使用到的私钥和登录服务器的用户名和ip地址。
# 密钥的方式登录
ssh -i ./root_key.pem root@54.243.22.210
# 客户端生成公钥和私钥, 将公钥文件上传的服务器上,然后在追加到 authorized_keys 文件中
ssh-keygen -t rsa
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
# 密码的方式登录
# ssh 用户名:密码@主机地址
ssh -p 6688 root:123@192.168.1.128
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12