[Linux]SSH无密码登录和传输文件

180 阅读2分钟

每次使用ssh登录或者传输文件的时候都需要输入密码,非常的麻烦。使用SSH密钥对就可达到无密码登录。

1. 在本机生成SSH密钥

成本密钥非常简单 直接使用ssh-keygen 工具即可。

ssh-keygen -t rsa -b 4096
  • -t:用来指定密钥类型
    • 常见的密钥类型如下:
    • rsa: 使用 RSA 算法生成密钥
    • dsa:用于生成 DSA 密钥对,但通常不推荐使用,因为不足够安全。
    • ecdsa:基于椭圆曲线的数字签名算法,提供较高的安全性。
    • ed25519:使用 EdDSA (Edwards-curve Digital Signature Algorithm),它是一种更现代、更安全的算法。
  • -b: 这是指定密钥的 位数(长度)
    • 常见的长度有:
    • 4096 表示生成一个 4096 位 长度的密钥。密钥长度越长,安全性越高,但生成过程会相对更慢。
    • 2048:这是默认的推荐密钥长度,通常可以提供足够的安全性。
    • 1024:较短的密钥长度,安全性较低。

一路回车即可 PixPin_2024-11-09_17-32-47.gif 然后就会生成.ssh目录,这个目录是隐藏的,直接cd即可进入

image.png 上面就是通过ssh-keygen生成的密钥文件。

  • id_rsa(私钥) :保密且只能由本人使用,不应泄漏。用于身份验证。
  • id_rsa.pub(公钥) :可以共享给其他人或远程服务器。用于验证身份。

2. 讲公钥复制到目标主机上

使用 ssh-copy-id 将本地生成的公钥复制到远程服务器上,这样远程服务器就知道允许您无密码登录。

ssh-copy-id [用户名]@[IP地址]
  • 这样公钥就会被添加到远程主机的 ~/.ssh/authorized_keys 文件中。
  • 如果无法使用ssh-copy-id也可以把公钥直接发送到目标主机上。直接把公钥写入到 ~/.ssh/authorized_keys文件中即可。