ssh 过期了?什么都没做

ssh 过期了?什么都没做

我的ssh电脑无法正常工作。当我执行以下命令时,什么都没有发生。光标不会移动到下一行来接受密码,我也没有收到错误。也没有挂起。它只是移动到下一行等待另一个命令。

$ ssh [email protected]
$

以下是我为排除故障所采取的措施。

  1. 尝试了详细选项。但结果相同。

    $ ssh -v [email protected]
    $
    
  2. 尝试 ping 该位置。看来我可以到达那里。

    $ ping foo.edu
    PING foo.edu (10.50.178.250): 56 data bytes
    64 bytes from 10.50.178.250: icmp_seq=0 ttl=60 time=4.369 ms
    64 bytes from 10.50.178.250: icmp_seq=1 ttl=60 time=3.013 ms
    64 bytes from 10.50.178.250: icmp_seq=2 ttl=60 time=3.235 ms
    64 bytes from 10.50.178.250: icmp_seq=3 ttl=60 time=2.791 ms
    64 bytes from 10.50.178.250: icmp_seq=4 ttl=60 time=10.105 ms
    64 bytes from 10.50.178.250: icmp_seq=5 ttl=60 time=4.321 ms
    64 bytes from 10.50.178.250: icmp_seq=6 ttl=60 time=2.754 ms
    64 bytes from 10.50.178.250: icmp_seq=7 ttl=60 time=2.801 ms
    ^C
    --- foo.edu ping statistics ---
    8 packets transmitted, 8 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 2.754/4.174/10.105/2.326 ms
    
  3. 重启电脑。没有变化。

  4. 重新启动 ssh 服务(我在 Mac 上)没有变化。

    $ sudo launchctl stop com.openssh.sshd
    $ sudo launchctl start com.openssh.sshd
    
  5. 尽力操作。拿到了手册。

    $ man ssh
    
  6. 检查 ssh 是否确实在/usr/bin。是的,它在那里。

    $ ll /usr/bin | grep ssh
    lrwxr-xr-x   1 root   wheel     3B Oct 21  2016 slogin -> ssh
    -rwxr-xr-x   1 root   wheel   2.0M Apr 28  2017 ssh
    -rwxr-xr-x   1 root   wheel   1.7M Apr 28  2017 ssh-add
    -rwxr-xr-x   1 root   wheel   1.7M Apr 28  2017 ssh-agent
    -rwxr-xr-x   1 root   wheel    10K Nov 14  2016 ssh-copy-id
    -rwxr-xr-x   1 root   wheel   1.8M Apr 28  2017 ssh-keygen
    -rwxr-xr-x   1 root   wheel   1.8M Apr 28  2017 ssh-keyscan
    
  7. 运行以下命令。

    $ type ssh
    ssh is hashed (/usr/local/bin/ssh)
    $ vim /usr/local/bin/ssh
    1#!/bin/sh
    2
    3 HOSTNAME=$@
    

我似乎不知道发生了什么。如能得到任何帮助我将不胜感激。

答案1

而不是/usr/bin/ssh你的 shell 运行/usr/local/bin/ssh的是一个不执行任何操作的脚本。

这可能是因为/usr/local/bin在您的$PATH之前/usr/bin。这没什么问题;问题在于脚本。

如果您有权sudo访问然后您可以删除该脚本(通常它会影响所有用户;首先值得调查为什么该脚本存在;该脚本很奇怪,所以删除它可能是正确的事情):

sudo rm /usr/local/bin/ssh

另外你需要告诉你的 shell 忘记现在已经过时的路径ssh

hash -d ssh

无法sudo访问你可以用别名来绕过这个奇怪的脚本:

alias ssh=/usr/bin/ssh

相关内容