SSH Agent Forwarding概念与示例

本文介绍如何利用SSH密钥转发功能,在无需将内网目标机的私钥放置于公网跳板机的情况下,从客户机安全地访问目标机。通过在客户机上启动ssh-agent并添加目标机的私钥,再配置SSHAgentForwarding选项,即可实现在跳板机上通过访问客户机上的ssh-agent获取私钥,进而登录目标机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ssh-copy-id拷贝公钥及ssh-agent添加passphrase一文中,我们已经知道ssh-agent可以免除输入passphrase的麻烦,本文演示其另一功能,SSH agent forwarding。

假设有3台机器,客户机,位于公网的跳板机和位于内网的目标机。

为了访问内网的目标机,通常需要将目标机的私钥放置在跳板机上。而SSH agent forwarding可以实现以下的功能:

  • 跳板机上无需放置目标机的私钥
  • 跳板机通过访问客户机上的ssh-agent获取私钥

注意,前提是客户机可以访问跳板机,也就是具有访问跳板机的私钥

因此在客户机上需要启动ssh-agent,并添加目标机的私钥。

#  以下操作均位于客户机
$ eval `ssh-agent`
Agent pid 17808


# 可以指定key的路径,例如ssh-add -k /tmp/id_rsa
$ ssh-add
Identity added: /c/Users/yyxiao/.ssh/id_rsa (/c/Users/yyxiao/.ssh/id_rsa)

$ ssh-add -l
2048 SHA256:VSjsgy1rieKeqZqSOf/ubyXilTwdwURLZOPcuxaA3pU /c/Users/yyxiao/.ssh/id_rsa (RSA)

客户机和跳板机均需要允许SSH Agent Forwarding,或者说ssh和sshd都需要允许SSH Agent Forwarding。
客户机的配置可以在ssh_config文件中配置,或者使用-A选项。sshd的配置需要以下选项,默认是允许的:

AllowAgentForwarding yes

下面我们来验证这个过程:

# 在客户机上,以-A选项登录跳板机
$ ssh -A opc@130.61.120.167
Last login: Wed Nov  4 09:12:15 2020 from 202.45.129.203

# 在跳板机上,确认没有存私钥文件id_rsa
[opc@instance-20201027-1039 ~]$ ls -l ~/.ssh
total 12
-rw-------. 1 opc opc  398 Oct 27 02:40 authorized_keys
-rw-------. 1 opc opc 1672 Nov  4 03:16 id_rsa.orig
-rw-r--r--. 1 opc opc  342 Nov  4 03:23 known_hosts

# 在跳板机上,登录目标机成功
[opc@instance-20201027-1039 ~]$ ssh 10.0.1.14
Last login: Wed Nov  4 09:09:12 2020 from instance-20201027-1039.sub07281614200.training.oraclevcn.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值