如何在Linux/Unix上使用ssh-agent进行身份验证

如何在Linux 和Unix 类系统(如 macOS 或 FreeBSD 桌面)上使用 ssh-agent 命令进行非交互式身份验证?我的私钥是用口令或密码保护的。所以我需要输入口令才能多次使用ssh私钥进行验证。我怎样才能让ssh只询问一次口令?
你需要使用ssh-agent 命令。它将保存你用于ssh公钥认证的私钥。换句话说,ssh-agen会记住并暂时将口令存储在内存中。然后,只要你用私钥使用ssh命令,ssh-agent就会启动,为ssh会话提供密码口令。因此,省去了再次输入口令的麻烦。
1、使用ssh-agent命令进行非交互式认证。
打开终端,输入以下命令:

$ eval $(ssh-agent)
$ eval `ssh-agent`

您将在屏幕上看到ssh-agent的PID,如下所示:
Agent pid 97280
2、使用ssh-add将私钥口令添加到ssh-agent中。
现在我们的ssh-agent正在运行,你需要提供ssh私钥的密码。例如,运行ssh-add命令:
$ ssh-add
输入密码:

Enter passphrase for /home/vivek/.ssh/id_ed25519: 
Identity added: /home/vivek/.ssh/id_ed25519 (vivek@nixcraft)

默认情况下,它添加了~/.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
3、设置身份/私钥的最大使用期限
传递-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,并在登录时自动解锁密钥。例如
如何在Linux/Unix上使用ssh-agent进行身份验证
4、使用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-nixcraft-servers [email protected]
$ ssh [email protected]

如何在Linux/Unix上使用ssh-agent进行身份验证
在我的Ubuntu Linux桌面上运行的用于非交互式ssh身份验证的ssh-agent
请注意,当您退出shell或关闭启动ssh-agent的终端会话时,密码将从系统内存中删除。
5、如何列出我的ssh-agent缓存的私钥
运行以下命令以列出所有身份/私钥的缓存:
$ ssh-add -l
输出:

256 SHA256:uym82 ..... 6VLU vivek @ nixcraft(ED25519)
2048 SHA256:GVs ... S0AA root @ backup-servers(RSA)
3072 SHA256:VLg8 ... SCDFp本地lxds的密钥(RSA)

要查看列出所有身份的所有公钥参数:
$ ssh-add -L
6、删除所有缓存的ssh-agent私钥
使用-D选项传递给ssh-add命令:
$ ssh-add -D
屏幕上将显示以下确认信息:
All identities removed.
即删除所有身份。
A5互联https://www.a5idc.net/

猜你喜欢

转载自blog.51cto.com/14414732/2529997