首先,正确的命令是:
ssh user@my.external.ip.address
并且应该将路由器配置为将SSH端口22转发到服务器的本地IP地址。
为了进一步调试:
1)检查服务器和路由器上的端口22(SSH)是否打开(端口转发)。
2)检查您的服务器上是否正在运行SSH服务器
3)在连接时使用ping
,ssh -v
并查看/var/log/auth.log
以调试任何其他连接问题。
1)在您的路由器上:按照路由器的特定说明进行操作
在服务器上:(sudo ufw status
除非使用其他防火墙配置实用程序)或sudo iptables -L
(一般方法,但输出复杂)
要打开端口22: sudo ufw allow 22
cf https://help.ubuntu.com/12.04/serverguide/firewall.html
2)检查是否已安装: dpkg -l openssh-server
检查它是否正在运行:service ssh status
或ps aux | grep sshd
3)在连接客户端上:
ping my.external.ip.address
ssh -v user@my.external.ip.address
在服务器上:
sudo less /var/log/auth.log
您也可以根据需要检查路由器日志。
这是一个在线端口扫描程序:https : //www.grc.com/x/ne.dll?bh0bkyd2
我认为您也可以使用诸如nmap之类的工具,但是我对它们还不那么熟悉。
处理不断变化的外部IP地址:
1)获取dynDNS或类似帐户:http ://dyn.com/dns/
动态DNS提供程序列表:
2)另一个解决方案是设置一个crontab作业,该作业会定期向您发送您的外部IP地址或放入Dropbox之类的在线存储服务中。
这是我的一个朋友使用的脚本:
#!/bin/bash
# Bash script to get the external IP address
MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
echo "My IP address is: $MYWANIP"
IPold=$(cat /home/USER/Dropbox/test.txt)
echo "Previous IP Address: $IPold"
if [[ $IPold != $MYWANIP ]] ;
then
echo "New IP"
rm /home/USER/Dropbox/test.txt
echo $MYWANIP >> /home/USER/Dropbox/test.txt;
echo $MYWANIP;
else
echo "Same IP";
fi
# example crontab entry:
## m h dom mon dow command
## */10 * * * * /home/USER/Dropbox/test_ip.sh
路由器端口转发:
1)首先,运行以下命令找出路由器的本地IP地址:
ip route | grep default
通常类似于192.168.xx
替代方法和其他OS解决方案:
2)使用本地连接到路由器的任何计算机,访问先前找到的IP ,例如通过http://192.168.1.1。这应该调出路由器配置界面。
3)接下来的步骤取决于您的路由器。例如,这是在具有OpenWRT的路由器上完成的操作:
https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/