SSH

SSH的三种端口转发

1、本地转发

本地转发,顾名思义就是把本地主机端口转发到远程主机端口

ssh -L 本地主机端口:远程主机:远程主机端口

举例:ssh -L 50000:www.google.com:80 user@host

当成功执行上面的命令之后,访问本地的50000端口,就等同于访问 www.google.com 的 80 端口。

这次是通过ssh主机来安全转发数据的,没有人知道你和远程主机之间传输了何种数据。

现在就算你能访问 www.google.com,你却依然不能其它主机,比如www.youtobe.com。

想要更全面的端口转发功能,还需动态转发。

2、远程转发

设想你在本机开发了一个web应用,想拿给别人看看,但现在你却处在内网,怎么办?

远程转发,顾名思义就是把远程主机端口转发到本地主机端口

ssh -R 登录主机端口:远程主机:远程主机端口

举例:ssh -R 8080:localhost:80 user@host

SSH自动穿越跳板机

ssh、scp本身就支持 跳板机,不需要额外支持。例如 ~/.ssh/config 的配置

Host bg-a
    HostName 1.2.3.4
    Port 22
    User ubuntu
    IdentityFile ~/.ssh/prod-ubuntu

Host web-a
    HostName 192.168.200.2
    Port 22
    User ubuntu
    IdentityFile ~/.ssh/prod-ubuntu
    ProxyCommand ssh -q -W %h:%p bg-a
然后你就可以使用 ssh web-a 直接连接到内网的服务器(透过 bg-a),或者 scp /xxx/xxx/x.tar.gz web-a:/tmp/ 这样的操作也支持。

当然,在walle的主机列表里,填写 
    

SSH在本地执行远程机器上的命令

SSH在本地执行远程机器上的命令
在本地使用 ssh $RemoteNode  <cmd>  可以在执行远程机器上的命令,例如 ssh  user@node  ls /local  会执行远程机器上的 ls /local 命令,如果想在远程机器上连续执行多条命令,可以用单引号或者双引号将这些命令括起来,
例如:ssh  user@node  "cd  /local; pwd;ls"