我在同一个路由器后面有两台计算机。 我们叫他们A和B。
A可以通过以下方式SSH到B: ssh usr@<internal ip of computer>
B可以通过这样做SSH到A,但必须使用外部IP。 我已经将我的路由器的端口22转发到计算机A的IP,以便所有对我来说都有意义。
但是,我还想将端口26转发到计算机B,并通过使用外部IP从网络外部进行SSH,但指定端口22或26,以有效地选择要使用的计算机。
我已经尝试允许端口26通过输出 iptables
在A和B的输入上,但这似乎不起作用。 我还将端口26转发到B的内部IP(通过路由器),就像我对A的22所做的那样。
这是当我尝试使用外部IP和端口26从A SSH到B时得到的:
ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.
版本:
- A=OpenSSH_5.9p1Debian-5ubuntu1,OpenSSL1.0.1 14Mar2012
- B=OpenSSH_6.0p1Debian-4,OpenSSL1.0.1c2012年5月10日
A有12.04Ubuntu,B是带有Raspbian的Raspberry Pi。
编辑:我忘记放入的东西:我确实尝试切换SSH配置文件(我发现它是 /etc/ssh/ssh_config
)我未注释(删除了 #
)与 Port
而改变了 22
到 26
. 它给了我连接拒绝的消息。 (我重新启动无济于事。)
如果您在Linux系统上,并且希望连接到端口26上的SSH服务器,则可以使用以下命令。
ssh user@192.168.1.1 -p 26
注意事项:
- 将服务器IP替换为服务器的IP地址或DNS名称。
- 按照您设置的方式更改端口号。
- 如果您使用自定义端口SSH,则允许相同的端口用于出站,防火墙上的入站连接,否则连接将无法建立
Quinn
#3
看起来你没有在第二台机器上的端口26上运行SSH。 您可以将该计算机上的端口号更改为26。
任编辑 /etc/ssh/sshd_config
&功放;不要忘记重新启动SSH(service sshd restart
)或将其保留在22上,但将路由器上的端口26转发到第二台机器上的端口22。 另外,不要忘记更改第二台计算机上的任何防火墙设置以允许连接通过。
Skylar
#4
我仅将端口22用于intranet ssh访问。
对于通过互联网访问,我使用自定义(不寻常)端口。这有一个好处,我减少了脚本孩子产生的负载,他们正在扫描端口22为"众所周知的用户名"。
该 外部 sshd过程由 xinetd
并与 内部 sshd
process.In 以下示例我使用端口12345:
您可以自由地将其更改为系统上的任何可用的免费端口号。也许一个更高的值会使这个端口被一个 "快速端口扫描".
该 xinetd
配置是:
service ssh-external{ socket_type = stream wait = no protocol = tcp type = UNLISTED user = root server = /usr/sbin/sshd server_args = -i -f /etc/ssh/external-sshd.config port = 12345 log_on_failure += USERID}
文件 /etc/ssh/external-ssdh.config
可以是你平时的副本 sshd
配置。确保配置了以下语句:
Port 12345AddressFamily inet
我还建议强制执行公钥身份验证并禁用internet访问的密码身份验证:
PasswordAuthentication noPermitEmptyPasswords noChallengeResponseAuthentication no
监听端口也可以硬链接到IP地址
/etc/ssh/sshd_config:
ListenAddress 10.10.10.10:22ListenAddress 20.20.20.20:4444
正如我在一个 相关答案,ssh客户端允许指定URI格式为 ssh://user@host:1234
. 例如:
ssh ssh://myuser@mydomain.com:2222
其中2222是端口号。 替换您打算使用的端口号。 当然,请记住,为了连接到指定的端口ssh服务器(在您尝试连接的主机上)必须首先侦听指定的端口
在默认端口(TCP/22)上运行ssh不是一个好主意,无论是从WAN IP22转发到LAN IP上使用ssh-server的任何端口。
要使ssh-server侦听任何给定的端口,您必须
编辑 /etc/ssh/sshd_config
(注意 d)从 #Port 22
到 Port 26
. 即,取消注释并更改端口。 优于26 会是什么 随机上方 (65535以下),像42895。
还可以考虑更改为 PermitRootLogin no
.
-
使用以下方法测试您的配置 ssh测试模式
sudo sshd -t
-
重新启动ssh-server服务
sudo systemctl restart sshd.service
然后从ssh-client您将能够连接
ssh user@serverNameOrIP -p 42895
如果mosh包安装在服务器上,则使用
mosh --ssh="ssh -p 42895" serverNameOrIP
Harley
#8
请注意,/etc/ssh/ssh_config_是ssh客户端配置。 其中as/etc/ssh/sshd_config_是ssh守护程序配置。
Yuu ohave SSH在第二台机器上的端口22或26上运行吗?