我通过许多亚马逊帐户管理EC2实例(虚拟机)。机器不一定有域名;通常我通过IP地址连接到它们。
每个AWS帐户都有自己的堡垒服务器,我可以通过它连接。这很烦人,因为当我连接到机器时,我必须在命令行上指定SSH隧道的设置。如果机器有域名,我将在我的~/.ssh/config文件中配置隧道。相反,我必须这样做--代理IP地址根据我正在处理的AWS帐户而改变:
ssh -o ProxyCommand="ssh -W %h:%p ubuntu@1.2.3.4" ubuntu@172.17.1.2是否有一种很好的配置SSH的方法,因此我不需要指定代理命令(或者用户名)?如果更有意义的话,我很乐意使用另一个解决方案,比如bash别名。
发布于 2016-08-31 07:26:19
这正是您拥有~/.ssh/config的目的。目前还不清楚你有什么问题,但是
Host proxy1
Hostname 1.2.3.4
User ubuntu
Host target1
Hostname 172.17.1.2
ProxyCommand ssh -W %h:%p proxy1
User ubuntu然后只使用ssh target1连接。当然,您可以使用单个代理匹配更多的目标,定义不同的别名,或者使用通配符(Host 172.17.1.*)来匹配整个IP块。
发布于 2016-08-31 04:46:05
我将这些别名添加到我的.bashrc文件中:
alias ssh-foo='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <FOO_BASTION_IP>" -l ubuntu'
alias ssh-bar='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -l ubuntu'现在,要连接的命令非常简单,如:
ssh-foo <FOO_INSTANCE_IP>scp的别名是相似的,但是用户名需要被不同地命名:
alias scp-bar='scp -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -o User=ubuntu'发布于 2016-08-31 05:00:04
就像前面提到的.bashrc选项一样。对于不同的事物:
修改您的主机文件,以包括友好的名称,如您所愿。
sudo vi /etc/hosts使用ssh脚本创建几个不同的文本文件。
创建了一个文本文件:
sudo echo "ssh -o ProxyCommand=\"ssh -W %h:%p ubuntu@1.2.3.4\" " > your-ssh-file
使其可执行
sudo chmod +x your-ssh-file
在您创建的文件夹中使用以下方法执行文件:
./your-ssh-file
https://unix.stackexchange.com/questions/306870
复制相似问题