Mac dev 文件夹丢失,SSH 无法正常工作

Mac dev 文件夹丢失,SSH 无法正常工作

几天前,SSH 停止工作了。

  1. 有人能帮助我让 SSH 正常工作吗(以前是这样的)
  2. 帮助我理解 UNIX dev 文件夹
  3. 是否有任何类似 Mac 客户端的 PUTTY。

当我尝试使用 SSH 登录时,收到以下消息:

PTY allocation request failed on channel 0
stdin: is not a tty
fatal: unrecognized command ''
Connection to 74.52.61.194 closed.

网络搜索显示 /dev/std/ 文件夹可能有问题。
但我打开了隐藏文件夹,找不到 /dev/ 文件夹(dev 有一个别名,但 Mac 声称它是一个断开的链接),当我使用 Houdini 等其他工具搜索时也是如此。但我可以通过 cd 进入,所以我搞不清楚这个文件夹到底出了什么问题。

是否有任何工具可以保存我的 SSH 首选项,这样我就不必每次都输入又长又复杂的用户名@地址、密码、路径?

不是在寻找 Filezilla 类型的客户端,这类客户端有很多。寻找像 putty 这样的命令行,这样我就可以在远程客户端上使用 bash。

我在使用 Macbook Pro,最新版本的 Tiger。

编辑:已尝试使用 -v 进行 SSH,这是输出,它是否可以帮助知识渊博的超级用户?

OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to 74.52.61.194 [74.52.61.194] port 22.
debug1: Connection established.
debug1: identity file /Users/me/.ssh/identity type -1
debug1: identity file /Users/me/.ssh/id_rsa type 1
debug1: identity file /Users/me/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '74.52.61.194' is known and matches the RSA host key.
debug1: Found key in /Users/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/me/.ssh/identity
debug1: Offering public key: /Users/me/.ssh/id_rsa
debug1: Remote: Forced command: perl -e 'exec qw(git-shell -c), $ENV{SSH_ORIGINAL_COMMAND}'
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: read PEM private key done: type RSA
debug1: Remote: Forced command: perl -e 'exec qw(git-shell -c), $ENV{SSH_ORIGINAL_COMMAND}'
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
PTY allocation request failed on channel 0
stdin: is not a tty
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
fatal: unrecognized command ''
debug1: channel 0: free: client-session, nchannels 1
Connection to 74.52.61.194 closed.
Transferred: sent 2448, received 2856 bytes, in 0.4 seconds
Bytes per second: sent 6027.2, received 7031.8
debug1: Exit status 0

答案1

你应该使用终端应用程序执行 SSH,对于您经常连接的主机,您可以创建别名并设置加密密钥,以便您可以更快地登录。

要创建别名:

alias gohost='ssh [email protected]'

当然,请将别名命名为对您有用的东西,而不是gohost

要创建 ssh 密钥,请执行以下操作:

ssh-keygen

然后按照提示操作,除非您知道自己在做什么,否则请接受默认值。如果您想要无密码登录,请将密码短语留空,如果您想要保留密码登录,只需跳过 ssh-keygen 并使用它gohost连接到您的主机。

ssh 密钥的好处在于,您可以通过 ssh 执行scp(安全复制)rsync,而不必一直重新输入密码,当然您要确保 Mac 上的帐户是安全的,这样只有您可以使用这些密钥(它们链接到您的帐户,并存储在文件~/.ssh夹中。)

如果您创建了 ssh-key,则需要将公钥复制到服务器的主目录中,因此让我们将公钥复制到剪贴板。

cat ~/.ssh/id_rsa.pub | pbcopy

pbcopy获取标准输入并将其放置在 mac 剪贴板中,pbpaste执行相反操作,并将剪贴板的内容发送到标准输出,但仅限文本。)

然后连接到 ssh 主机,然后执行:

cat >> ~/.ssh/authorized_keys

从剪贴板粘贴密钥,按下EnterCtrl-D,退出主机,然后尝试再次连接,如果一切顺利,您将再次发现自己处于主机提示符下,而无需密码。

为何你的 ssh 不工作?

查看您的调试输出,有几件事不清楚。首先,您的ssh安装似乎没有问题。

错误信息还表明/dev/pty不存在,请检查它是否存在(不在 Finder 中)...

但这看起来像是服务器错误,您是否尝试过 ssh 到另一台服务器?

Dev 文件夹

如果你做不到sudo ls /dev那么你的系统肯定存在严重问题。

解释一下什么/dev是 Unix(OS X 建立在其之上)用来/dev访问设备、标准输入、标准输出、硬盘、cd/dvd 驱动器等等。

这使得 Unix 可以将设备作为文件系统的一部分来访问,并与它们进行通信。

在一般使用中,您应该不要管这个/dev文件夹,一些 GUI 工具(例如备份软件,或者您使用的 Houdini)偶尔会报告一些错误,因为这不是它们能理解的文件夹。(理想情况下,它们应该忽略它。)

答案2

以下是对我有用的方法。
它是为了帮助遇到同样问题的人而写的,但不是“正确”的答案,因为我很确定它不应该起作用。阅读 slomojo 答案的帖子以了解整个概要。

  1. 症状:Mac 上的 SSH 无法连接到我的 Site5 托管服务器。我能够通过 SSH 连接到其他服务器,没有任何问题。
    问题:SSH 将自动发送 .ssh/id_rsa 或 .ssh/id_dsa 文件中的任何密钥。
    设置 GitHub 帐户时,通常会创建这些文件。Site5
    正在获取无法识别的 GitHub 密钥并因此而陷入困境。
    解决方案:我将 GitHub 私钥从 .ssh/id_rsa 移至另一个文件(例如 .ssh/GitHub),并添加了一个配置文件以将 SSH 指向该密钥。一旦 GitHub 密钥不再被推送到 site5,一切就都正常了。
    从安全角度来看,这听起来像是一件大事,否则我的密钥很容易被盗。(我不懂 SSH,所以可能忽略了一些显而易见的东西。)

  2. dev 文件夹与我的问题无关,因为我的问题属于服务器端。
    不过,dev 文件夹的最佳解释如下:
    http://www.mackb.com/Uwe/Forum.aspx/macintosh/3883/That-mysterious-dev-folder

  3. 为了创建别名,Slomojo 写道:

别名命令应该在你的 shell 启动中,如果你使用 bash,~/.bash_profile 是放置它们的地方。只需编辑/创建它并将你的别名放在末尾。有关别名的更多信息,请访问此处 - ss64.com/bash/alias.html

祝大家好运!

相关内容