ssh登录

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

以该命令为例: 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登录方式

  • 口令验证登录
    1. 服务器生成公钥和私钥
    2. 客户端发起连接请求,服务器将公钥发给客户端
    3. 客户端输入口令(服务器密码),并用服务器发来的公钥加密,发送给服务器
    4. 服务器通过私钥解密,拿到口令(服务器密码)
    5. 如果正确则认证成功

这种方式是我们管理但机器最常用的ssh连接远程服务器的方式,优点是无需进行额外的配置;但缺点是需要记住服务器主机的密码,并且第一次建立连接时需要手动接收服务器证书。

  • 密钥验证登录

    1. 客户端生成公钥和私钥,将公钥提前部署在服务器上
    2. 客户端发起连接请求
    3. 服务器随机生成一个字符串,使用本地的公钥加密,发送给客户端
    4. 客户端通过私钥解密,将解密后的字符串发送给服务器
    5. 服务器验证本地字符串和客户端发来的字符串的一致性,如果通过,则认证成功

这种方式连接的前提是服务器需要有客户端公钥,优点是不需要记住服务器密码,适合大规模集群管理

客户端密钥对可以通过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