数据人成长交流的一站式服务平台

网站首页 > 数据编程 正文

SSH密钥登录不止于安全,更方便三方传输

nandi88 2024-10-13 07:03:17 数据编程 5 ℃

使用密码登录SSH并不安全,存在被暴力攻击破解的风险,因此建议开启二次验证(双因子验证)以提高安全性,但二次验证(双因子验证)往往依赖于第三方服务商,引入了新的安全风险,因此,使用SSH密钥登录是首选的安全登录方式。

使用ssh-keygen命令生成密钥对,在 Linux 系统上,默认情况下,将在 Linux ~/.ssh/id_rsa 目录中创建 SSH 公钥和私钥文件,权限分别为644和600。需要注意,如果在指定目录中已经具有一个 SSH 密钥对,并且在运行该命令时使用相同的文件名,则会覆盖该现有密钥对。

$ ssh-keygen    生成密钥对
相关命令参数如下:
-m PEM 将密钥的格式设为 PEM,其他支持格式PKCS8,RFC4716
-i 与-m搭配使用,用于导入格式转换
-e 与-m搭配使用,用于导出格式转换
-t rsa 密钥类型,本例中为 RSA 格式,其他为“dsa”, “ecdsa”, “ecdsa-sk”, “ed25519”, “ed25519-sk”
-b 4096 密钥的位数,本例中为 4096
-C "debian_ssh" 追加到公钥文件末尾以便于识别的注释。
-f ~/.ssh/mykeys/myprivatekey 私钥文件的文件名(如果选择不使用默认名称)。 追加了 .pub 的相应公钥文件在相同目录中生成。 该目录必须存在。
-N mypassphrase 访问私钥文件的其他密码(不建议留空)

另外,常见3种操作:

从私钥重新生成OpenSSH格式公钥
ssh-keygen -y -f priKey.pem > sshPubkey.pub


将OpenSSL格式公钥转换成OpenSSH格式
ssh-keygen -i -m PKCS8 -f sslPubKey.pub 〉 sshPubKey.pub


将OpenSSH格式公钥转换成OpenSSL格式公钥
ssh-keygen -e -m PEM -f sshPubKey.pub >sslPubKey.pub

只要将生成的密钥对中的公钥上传到目标SSH服务器上,以后就可以免密登录了,上传公钥有两种方法:

方法一:使用命令ssh-copy-id

方法二:手工上传公钥文件

例如3台主机host1、host2、host3相互复制公钥,实现免密登录
[host1] $ ssh-copy-id khess@host2
[host1] $ ssh-copy-id khess@host3


[host2] $ ssh-copy-id khess@host1
host2] $ ssh-copy-id khess@host3


[host3] $ ssh-copy-id khess@host1
[host3] $ ssh-copy-id khess@host2

在 windows10系统中,也有ssh-keygen命令,但没有ssh-copy-id命令,只能手工上传公钥,命令如下 :

 将 windows 10系统中生成密钥对中的公钥上传给主机host1
 type .\.ssh\id_rsa.pub|ssh khess@host1 "cat >> .ssh/authorized_keys"

一旦免密登录,传输文件很方便,不仅可以这样:

[host1] $ scp host1.txt khess@host2:/home/khess/host1.txt
[host1] $ scp host1.txt khess@host3:/home/khess/host1.txt

还可以这样,由主机host1下达命令完成文件从主机host2到主机host3的传输,大大提高了运维效率。

[host1] $ scp khess@host2:/home/khess/host2.txt khess@host3:/home/khess/host2.txt

事实上,SSH是一种安全传输协议,而不是某种具体的服务,它还能实现更多,用于与计算机交互、复制文件和保护其他类型的通信,如 "通过 SSH 的 X 服务",再比如日常同步备份也可以通过SSH通道来完成,命令如下:

更为强大的rsync命令也离不开SSH
rsync -azv -e 'ssh -p PORT' --exclude=exclude.txt root@IP
最近发表
标签列表