ssh-agent 转发

29 Nov 2016 你需要在多个服务器之间工作,通过 ssh key,你可以从本机登录这几个服务器。你登录到一个其中一个服务器 A,

29 Nov 2016

  1. 你需要在多个服务器之间工作,通过 ssh key,你可以从本机登录这几个服务器。你登录到一个其中一个服务器 A,你想从 A 到另一个服务器 B,但服务器 B 上没有 A 的公钥,无法直接从 A 登录到 B。

  2. 你本机使用 ssh key 访问 GitHub 或者其他基于 ssh 认证的服务器,比如 Gitlab。你在本地提交代码,你可以登录服务器,你想在服务器上更新代码。

这样的场景,可以使用 ssh-agent。

  1. ssh 登录时,加入 -A 选项,开启转发。你可以通过设置 alias ssh='ssh -A' 来实现;

  2. 启动 ssh-agent,并通过 ssh-add 加入要转发的 key。通过 ssh-add -l 查看有哪些 key 已经加入。* key 的数量不能过多,ssh 会依次尝试使用这里的每一个 key,如果 key 数量过多,会达到最大尝试次数,认证失败。 *

你可直接使用将以下的脚本,加入到你的 ~/.bash_profile 中,在 add_ssh_keys 这个函数中,加入你要转发的 key,重新载入 ~/.bash_profile 即可。

function add_ssh_keys() { # Will load ~/.ssh/id_rsa /usr/bin/ssh-add # You also can add your other keys here # For example: /usr/bin/ssh-add}SSH_ENV="$HOME/.ssh/environment"function _start_agent { echo "Initialising new SSH agent..." /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null add_ssh_keys}function start_ssh_agent() { # Source SSH settings, if applicable if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null #ps ${SSH_AGENT_PID} doesn't work under cywgin ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { _start_agent; }else _start_agent;fi}function set_alias() { alias ll='ls -l' alias ssh='ssh -A'}start_ssh_agentset_alias

ssh-agent 有风险,使用使用谨慎。

https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/

http://rabexc.org/posts/pitfalls-of-ssh-agents

欢迎关注我的微信公众号

ssh-agent 转发

欢迎关注我的新浪微博,有问题随时交流。

欢迎关注我的 GitHub ,了解我最新关注的项目。

未登录用户
全部评论0
到底啦