Cookies之SSH命令

免密登录

内网机器,想要免密码登陆mnstory.net,需要将自己的公钥COPY到mnstory.net上。

首先,生成公钥:

1
2
3
[root ~]# ssh-keygen
[root ~]# ls ~/.ssh
id_rsa id_rsa.pub known_hosts

使用ssh-copy-id或者直接将公钥id_ras.pub追加到目标主机的~/.ssh/authorized_keys里:

1
[root ~]# ssh-copy-id root@mnstory.net

现在就可以免密码登陆mnstory.net了。

反向链接

如果一台主机在内外,一台在外网,我们知道,从内网连接外网很容易,而外网连接内网由于NAT和防火墙规则,导致很困难。如果外网主机一定要连接内网,可以使用ssh反向代理。

我们演示autossh监控做反向链接,autossh监听端口,假设为4001,内外网皆如此,内网主机通过22端口和外网主机mnstory.net的3000端口做隧道:

1
[root ~]# autossh -M 4001 -NR 3000:127.0.0.1:22 root@mnstory.net -p 22

查看一下本地的连接,可以看到,本地监听了4001,建立了到mnstory.net 22端口的链接:

1
2
3
4
5
[root ~]# netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:4001 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.5:48194 mnstory.net:22 ESTABLISHED

在目标主机mnstory.net上查看连接,可以看到,监听了端口4001和3000

1
2
3
[root ~]# netstat -na | grep -E '4001|3000'
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:4001 0.0.0.0:* LISTEN

现在,如果我们在外网主机连接它自己的3000端口,即连接的是内网主机22端口。

1
[root ~]# ssh 127.0.0.1 -p 3000

SCP也同样适用,例如将mnstory.net的文件例/tmp/my/db.sql复制到内网主机

1
2
3
[root ~]# scp -P 3000 /tmp/my/db.sql root@127.0.0.1:/www
root@127.0.0.1's password:
db.sql