ssh
一. 网址参考
1. SSH 教程(阮一峰)
3. sshpass使用
5. ssh端口转发:ssh隧道 (推荐)
6. SSH的三种端口转发
7. SSH登录过程
8. SSH原理与运用(一):远程登录(孙可)
二. 实际
1. 内网穿越示例
nohup /usr/bin/sshpass -p "Fxxxx1357" /usr/bin/autossh -M 4000 -y -NR *:21013:localhost:22 -p 21012 fx@183.xxx.xxx.xxx &
Fxxxx1357: 是sshd主机的ssh登录密码
21012:是sshd主机的一个ssh登录端口,并且映射到外网的21012端口
21013: 我的理解:这个21013好像是sshd主机的一个空闲的端口,并且映射到外网的21013端口
fx: sshd主机的SSH登录用户名
*:21013:localhost:22 : 表示本机回环接口(127.0.0.1,也可使用本机其他网络接口的地址,比如以太网 IP 或 WiFi IP)的 22 端口连接到远程主机的 21013 接口,因远程主机 21013 绑定的地址为空,所以远程主机会监听其所有网络接口的 21013 端口。
其sshd主机的参数设置:/etc/ssh/sshd_config, 其内部监听了两个端口22和21012
使用方法: 主机3可以通过ssh远程登录到demo板: ssh地址和端口----183.xxx.xxx.xxx 21013
2. ssh本地端口转发测试
工作机A: 192.168.22.91
中间机B: 192.168.22.71
目标机C(DEMO板): 192.168.22.121
需求:在工作机A上通过中间机B, 然后SSH登录目标机C
实现:
1)在工作机A上输入命令: ssh -f -N -L 23606:192.168.22.121:22 cjb@192.168.22.71 (其中cjb为192.168.22.71的ssh登录用户名),通过ss命令查看网络端口号:
2)然后再工作机上输入命令: ssh -p 23606 root@localhost (其中root为目标机C 192.168.22.121的ssh登录用户名);
后面会提示输入demo板的ssh用户root的登录密码
3. ssh远程端口转发测试:
工作机A: 192.168.22.91
中间机B: 192.168.22.71
目标机C(DEMO板): 192.168.22.121
需求:在工作机A上通过中间机B, 然后SSH登录目标机C;
目的:通过工作机A通过内网穿越访问到C, A和C都可以访问B(可以带公网IP), 然后A通过B访问到C
1) sshd设置(工作机B:192.168.22.71):/etc/ssh/sshd_config
2. 在目标机C(192.168.22.121)上输入命令:
ssh -f -N -R 23606:192.168.22.121:22 cjb@192.168.22.71
这样在中间机B(192.168.22.71)上看到端口号23606已被自动开启
3. 在工作机A(192.168.22.91)上输入命令:
ssh -p 23606 root@192.168.22.71
其中root为目标机192.168.22.121的ssh登录用户名,然后输入相应的ssh登录密码,则成功
4. 如果在中间机B(192.168.22.71)上,、/etc/ssh/sshd_config中的参数GatewayPorts没有开启,可以通过ssh -L本地端口转发命令,摘录:
(默认转发到远程主机上的端口绑定的是127.0.0.1,如要绑定0.0.0.0,需要打开sshd_config里的GatewayPorts选项。这个选项如果由于权限没法打开也有办法,可配合ssh -L
将端口绑定到0.0.0.0,聪明的你应该能想到办法,呵呵)
实际测试也是可以的,在192.168.22.71上输入命令:
ssh -L *:23506:localhost:23606 cjb@localhost
这样输入到23506端口的数据则被转发到23606端口上,在工作机A(192.168.22.91)输入的命令跟前面稍微有点不一致,即-p 后面的端口号
ssh -p 23506 root@192.168.22.71 (上面3. 端口是23606)