host1
为了简单起见,我有许多 ssh 主机(十几个),host2
等等。
我经常需要转发端口,例如
ssh -L 8888:localhost:8888 host1
ssh -L 8889:localhost:8888 host2
ssh -L 8890:localhost:80 host2
这很烦人,因为 1)我需要记住从本地端口到主机的映射;2)我需要手动执行此操作
我想实现某种系统来监听特定的主机(本地,在我的计算机上),例如host1.8888.ssh.local
并自动打开到该地址的隧道。
答案1
您可以在 ssh 配置文件中配置所有这些内容,通常位于以下位置:$HOME/.ssh/config
例如:
Host abc
Hostname 1.2.3.4
Port 345
IdentityFile /path/to/id_rsa
LocalForward 8888 localhost:8888
User root
Host def
Hostname 2.3.4.5
User root
LocalForward 8889 localhost:8889
这样,您只需键入ssh abc
,您在那里指定的所有设置都会被应用。手册页。
答案2
答案3
来自未来的注释,与所提出的问题无关,但解决了根本问题。
如果您在服务器上使用 VS Code 执行操作,则在启动任何进程(例如 jupyter、tensorboard、dashboard、webservers)后,VS Code 会将这些端口转发到本地计算机,因此无需记住任何内容,端口仅从您当前使用的主机转发 - 以及任意数量的端口,并且仅使用端口。多么方便!