如何在Linux/Unix上使用ssh-agent进行身份验证
时间:2020-01-09 10:39:53 来源:igfitidea点击:
在Linux和类似Unix的系统(例如macOS或FreeBSD桌面)上,如何使用ssh-agent命令进行非交互式身份验证?
我的私钥受密码或密码保护。
因此,如何输入密码才能多次使用ssh私钥进行身份验证。
我怎样才能告诉ssh只问一次密码?
您需要使用ssh-agent命令。
它会保存用于ssh公钥身份验证的私钥。
换句话说,ssh-agent会记住该密码并将其暂时存储在内存中。
然后,只要将ssh命令与私钥一起使用,ssh-agent就会启动以提供ssh会话的密码。
因此,消除了再次执行密码短语的麻烦。
使用ssh-agent命令进行非交互式身份验证
打开终端并输入以下命令:
$ eval $(ssh-agent) $ eval `ssh-agent`
您将在屏幕上看到ssh-agent的PID,如下所示:
Agent pid 97280
使用ssh-add将私钥密码短语添加到ssh-agent
现在我们的ssh-agent正在运行,您需要为ssh私钥提供密码。
例如,运行ssh-add命令:
$ ssh-add
输入密码:
Enter passphrase for /home/Hyman/.ssh/id_ed25519: Identity added: /home/Hyman/.ssh/id_ed25519 (Hyman@theitroad)
默认情况下,它添加文件~/.ssh/id_rsa,~/.ssh/id_dsa,~/.ssh/id_ecdsa,~/.ssh/id_ecdsa_sk,~/.ssh/id_ed25519和~/.ssh/id_ed25519_sk。
但是,我们声明另一个私钥文件如下:
$ ssh-add ~/.ssh/aws-web-servers
设置身份/私钥的最长生存期
向代理添加身份时,将-t life传递给ssh-add命令以最大寿命。
生存期可以以秒为单位或以sshd_config文件中指定的时间格式指定:
$ ssh-add -t 1800 # 1800 seconds $ ssh-add -t 45m # 45 minutes $ ssh-add -t 3h42 # 3 hours 42 minutes
请记住,您可以将GNOME/KDE或macOS桌面配置为在登录时自动运行ssh-agent和解锁密钥。
例如:
使用ssh-agent进行ssh/sftp/scp命令认证
将私钥(或私钥)添加到ssh-agent后,您要做的就是使用ssh,sftp,scp和所有其他ssh命令。
例如,我将为FreeBSD备份服务器执行ssh命令:
$ ssh user@server $ ssh user@hostname_or_ip $ scp file.doc [email protected]:~/Documents/ # State the private key for public key authentication # $ ssh -i ~/.ssh/aws-web-servers ec2-user@rhel8-web-server $ ssh -i ~/.ssh/linode-theitroad-servers [email protected] $ ssh [email protected]
如何列出我的ssh-agent缓存的私钥
运行以下命令以列出所有身份/私钥的指纹:
$ ssh-add -l
256 SHA256:uym82.....6VLU Hyman@theitroad (ED25519) 2048 SHA256:GVs...S0AA root@backup-servers (RSA) 3072 SHA256:VLg8...SCDFpA key for local lxds (RSA)
要查看列出所有身份的所有公钥参数:
$ ssh-add -L
删除所有缓存的ssh-agent私钥
将-D选项传递给ssh-add命令:
$ ssh-add -D
您将在屏幕上看到如下确认信息:
All identities removed.