`

使用ssh-agent

 
阅读更多

ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。
  其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。通过使用ssh-agent就可以很方便的在不的主机间进行漫游了,假如我们手头有三台server:host1、host2、host3且每台server上到保存了本机(supersun.biz)的公钥,因此我可以通过公钥认证登录到每台主机:
[root@supersun.biz ~]#ssh host1
Last login: Thu Oct 18 13:56:08 2007 from supersun
[root@host1 root]# 
[root@supersun.biz ~]#ssh host2
Last login: Fri Oct 12 11:14:44 2007 from supersun
[root@host2 root]# 
[root@supersun.biz ~]#ssh host3
Last login: Sat Sep 29 10:21:32 2007 from supersun
[root@host3 root]# 
  但是这三台server之间并没有并没有保存彼此的公钥,而且我也不可能将自己的私钥存放到server上(不安全),因此彼此之间没有公钥进 行认证(可以密码认证,但是这样慢,经常输密码,烦且密码太多容易忘)。但是如果我们启用ssh-agent,问题就可以迎刃而解了。 
  启用ssh-agent:
[root@supersun.biz ~]#eval `ssh-agent `
Agent pid 3526
  添加私钥:
[root@supersun.biz ~]#ssh-add
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
  编缉/etc/ssh/ssh_config文件:
   ForwardAgent yes
  让ssh-agent能转发,这样就可以这样登陆了:supersun.biz---->host1---->host2,到此请注意,如果host1上没有设定转发的话就登不了host3了,设定了转发后可以进一步跳到rs3上了。 
[root@supersun.biz ~]#ssh host1
Last login: Thu Oct 18 16:21:29 2007 from supersun
[root@host1 root]# vi /etc/ssh/ssh_config 
[root@host1 root]# ssh host2
Last login: Thu Oct 18 16:20:28 2007 from supersun
[root@host2 root]# ssh host3
Last login: Thu Oct 18 16:10:39 2007 from supersun
[root@host3 root]# 
  到这里基本上已经大功告成了,还有一个小问题那就是总不能每次都手动运行ssh-agent吧!最省时的方法就是将它写到profile中去:
  为了不把profile搞乱,我在在/etc/profile.d下建一个ssh-agent.sh文件:
[root@supersun.biz ~]#cat /etc/profile.d/ssh-agent.sh 
#!/bin/sh
if [ -f ~/.agent.env ]; then
        . ~/.agent.env >/dev/null
        if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then
                echo "Stale agent file found. Spawning new agent..."
                eval `ssh-agent |tee ~/.agent.env`
                ssh-add
        fi
else
        echo "Starting ssh-agent..."
        eval `ssh-agent |tee ~/.agent.env`
        ssh-add
fi
这样就不会生成太多的ssh-agent程序了,而且支持GUI环境。当我打开一个终端的话:
Stale agent file found. Spawning new agent...
Agent pid 2543
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@supersun.biz ~]#
添加了新的密钥。 

分享到:
评论

相关推荐

    ssh-agency:从Emacs在Microsoft Windows上使用ssh-agent

    **SSH-Agent 在 Emacs 中的使用:ssh-agency** 在IT领域,特别是在远程服务器管理与开发环境中,SSH(Secure Shell)是一种广泛使用的加密网络协议,它允许用户安全地执行命令、传输数据以及管理远程主机。SSH-...

    wsl-ssh-agent:可以与Windows子系统(Linux)的Windows ssh-agent.exe服务进行交互的助手

    wsl-ssh-agent 与WSL的Windows ssh-agent.exe服务进行接口连接的助手,替代ssh-agent-wsl。 Windows 10具有非常方便的ssh-agent服务(支持持久性和Windows安全性)。 不幸的是,无法从WSL访问它。 该项目旨在通过...

    ssh-agent-helper:在Windows上使用CMD,PowerShell等中的SSH密钥

    SSH代理助手在Windows上使用CMD,PowerShell等中的SSH... ssh-agent-helper.exe :不带任何参数调用程序将导致运行ssh-agent并将SSH_AUTH_SOCK和SSH_AGENT_PID设置为当前用户的环境变量。 这将允许ssh-add , ssh或使

    node-ssh-agent:Node.js客户端库,用于与OpenSSH Agent进行交互

    node-ssh-agent是绑定到“纯” node.js的SSH代理协议的客户端。 目前,支持的操作是“列表键”和“签名数据”(在SSH中,这是requestIdentities和sign 。 用法 var SSHAgentClient = require('ssh-agent'); var ...

    docker-ssh-agent:通过SSH连接的Jenkins代理的Docker映像

    要将此映像与,您需要使用环境变量JENKINS_AGENT_SSH_PUBKEY而不是作为启动参数来传递公共SSH密钥。 在“ Docker模板”的“环境”字段(高级部分)中,只需添加: JENKINS_AGENT_SSH_PUBKEY= 不要在公钥周围加上...

    ssh-agent:GitHub用私钥设置`ssh-agent`的动作

    ssh-agent GitHub操作这个动作启动ssh-agent , 导出SSH_AUTH_SOCK环境变量, 将一个或多个私有SSH密钥加载到代理中,然后为GitHub.com配置known_hosts 。 它应该可以在所有GitHub Actions虚拟环境中使用,包括基于...

    ssh-agent-wrapper-win:从 Windows 命令行运行的 ssh-agent 的简单包装器

    ssh-agent-wrapper-win 从 Windows 命令行运行的 ssh-agent 的简单包装器包装器启动 ssh-agent,设置所需的环境变量并将私有身份添加到代理使用建议将文件的快捷方式添加到 Windows 启动文件夹假设对于第一个版本,...

    http-ssh-agent:通过 ssh 向 http 服务器发送请求

    使用节点核心 var http = require ( 'http' )var agent = require ( 'http-ssh-agent' )// per default the agent will authenticate using ~/.ssh/id_rsa as your private keyvar ssh = agent ( 'username@example....

    use-ssh-agent

    在提供的文件名"use-ssh-agent-main"中,"main"通常指的是主要的或者入口文件,这可能是GitHub Action的具体实现代码,其中包含了启动SSH代理的逻辑。如果你需要查看或修改这个Action的行为,你可以查阅这个文件,...

    go-ssh-agent-locker:当 OSX 钥匙串被锁定时从 ssh-agent 中删除密钥

    go-ssh-agent-locker go-ssh-agent-locker 是一个简单的应用程序,只要钥匙串被锁定,它就会杀死 ssh-agent安装 go get github.com/MDrollette/go-ssh-agent-lockercp $GOPATH/bin/go-ssh-agent-locker /usr/local/...

    ssh-agent命令 ssh密钥管理器

    ssh-agent命令是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在...

    node-ssh-agent:替换节点中的ssh-agent

    概要 该代理程序替代了旧的ssh代理程序。 该程序包包括在命令行上使用的“服务器”和...listening on path /tmp/sshagent.sock % node-ssh-list [] % node-ssh-add Enter pass phrase for /Users/user/.ssh/id_rsa

    iam-ssh-agent:用于IAM实体的​​无密钥SSH代理

    iam-ssh-agent旨在用于不太受信任的连续集成环境中,在该环境中,您想使用ssh密钥来克隆源代码控制存储库而无需提供原始密钥材料。 iam-ssh-agent分为两个部分:一个二进制文件,它通过ssh-agent协议绑定unix域套...

    yubikey-agent:yubikey-agent是YubiKeys的无缝ssh-agent

    yubikey-agent是YubiKeys的无缝ssh-agent。 便于使用。一个命令的设置,一个环境变量,它仅在后台运行。 坚不可摧。允许拔出,Hibernate和挂起。无需重启。 兼容的。提供可与所有服务和服务器一起使用的公钥。 安全...

    chrome-ssh-agent:与Google Chrome的Secure Shell扩展一起使用的SSH代理

    在Secure Shell扩展中创建新连接时,将--ssh-agent=eechpbnaifiimgajnomdipfaamobdfha添加到“ SSH中继服务器选项”字段中,以指示它应使用SSH代理作为密钥。 学分 部分代码和方法很大程度上基于 Chrome扩展。 特别...

    ssh-add命令 agent的高速缓存

    ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add。 语法格式:ssh-add [参数] 常用参数: -D 删除ssh-agent中的所有密钥 -d 从ssh-agent中的删除密钥 -l 显示ssh-agent中...

    ssh-agent-relay:使您的WSL安装使用Windows SSH代理

    ssh-agent-relay-在WSL2中使用Windows SSH代理该项目为SSH代理设置了中继,以便WSL安装将使用Windows内置的SSH代理。 您是否知道Windows内置了SSH代理? 真是个世界!启用Windows SSH代理(仅一次) 通过提升的...

    yubikey-agent是YubiKeys的无缝ssh-agent。-Golang开发

    yubikey-agent是YubiKeys的无缝ssh-agent。 yubikey-agent yubikey-agent是YubiKeys的无缝ssh-agent。 易于使用。 一个命令的设置,一个环境变量,它仅在后台运行。 坚不可摧。 允许拔出,Hibernate和挂起。 无需...

    pam_ssh_agent_auth-0.10.3-7.12.el8.x86_64.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    ansible-role-ssh-agent

    [许可证:麻省理工学院]( stegmannb / ansible-role-ssh-agent)]( stegmannb / ansible-role-ssh- agent / blob / master / LICENSE)![持续集成]( stegmannb / ansible-role-ssh-agent /workflows/Continuous ...

Global site tag (gtag.js) - Google Analytics