我无法通过终端通过 SSH 进入我的服务器。到目前为止,我尝试过:
ssh root@ip-address
和ssh username@ip-address
但都没有奏效。我的屏幕有一段时间是空白的,然后最终
操作超时
我也尝试过切换到其他位置并使用不同的互联网服务提供商,因此我很确定问题不是防火墙。
我可以通过 FTP 登录。
这是我得到的:
$ ssh hosting-account-username@ip-address
ssh: connect to host ip-address port 22: Operation timed out
我也尝试过这个,但没有结果:
$ nc ip-address 22
我已经 ping 过该地址:
$ ping ip-address
64 bytes from ip-address icmp_seq=143 ttl=45 time=44.543 ms
64 bytes from ip-address icmp_seq=143 ttl=45 time=43.686 ms
64 bytes from ip-address icmp_seq=143 ttl=45 time=46.501 ms
-- and so on
我的托管公司告诉我我确实有 SSH,但是在端口 2222(而不是 22),因为我有一个共享托管帐户并尝试过此操作:
$ nc ip-address -p [2222]
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval]
[-p source_port] [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
$ ssh username@ip-address:2222
ssh: Could not resolve hostname ip-address:2222: nodename nor servname provided, or not known
不确定还能尝试什么。
答案1
-p
命令中的选项是nc
源端口,您需要指定目标端口。
尝试$ nc ip-address 2222
检查是否可以到达港口。
此外,我并不认为ssh
命令接受语法hostname:port
。
不妨尝试$ ssh -p 2222 username@ip-address
一下。
答案2
为了防止暴力攻击等,在非默认端口上运行ssh
服务是相当常见的,因此您需要指定(正确的!)端口号。如果您不确定这是什么,您可以咨询您的服务提供商,或者您是否有其他方法来访问服务sudo netstat -ltnp | grep ssh
要进行连接,假设您使用端口 2222
ssh -p 2222 user@host
可以。对于scp
或sftp
,选项更改为大写,因此
scp -P 2222 user@host:/path/to/remote/file /path/to/local/destination
如果您使用的是 *nix 系统(包括 Mac),您可以编辑~/.ssh/config
和创建处理各种端口选项等的配置文件。
Host webhost
HostName www.example.com
Port 2222
User webmaster
IdentityFile ~/.ssh/www-private-key
然后只需通过连接即可,ssh webhost
因为webhost
配置文件为连接指定了主机名、端口号、用户等。
答案3
对我有用的是使用ssh user@IP -p 2222
。系统要求输入密码,然后立即登录。