さらに、Windowsマシン(同じラップトップ、異なるハードドライブ)からのSSHは動作しますが、LinuxマシンからのSSHは動作しません。
ssh -vvv root@host -p port`では次のようになります:
OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer
Windowsマシンではすべてが正常に動作しているので、セキュリティログをチェックしたところ、そこにある行は同じで、サーバーは2つの異なるマシン"を同じように扱い、どちらも公開鍵認証で許可されています...。
つまり、これは私のローカルな ArchLinux ラップトップに問題があるに違いないという結論に至りました......しかし、何が?
[torxed@archie ~]$ cat .ssh/known_hosts
[torxed@archie ~]$
だからそれは問題ではない...。
[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ファイアウォールの設定とのコンフリクトは(今のところ)ありません。
[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------ 2 torxed users 4096 Sep 3 2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw------- 1 torxed users 1679 Sep 3 2013 id_rsa
-rw-r--r-- 1 torxed users 403 Sep 3 2013 id_rsa.pub
-rw-r--r-- 1 torxed users 170 May 11 11:21 known_hosts
パーミッションは問題ないようです(サーバでも同じ)...
また、/etc/ssh/ssh_config
を設定せずに試してみましたが、クライアントで多くの自動設定が行われる以外は同じ結果となり、結局同じエラーが発生しました。
外部要因を排除した場合は、以下の手順で原因を絞り込むことができます。これはご質問に直接お答えするものではありませんが、エラーの原因を突き止めるのに役立つかもしれません。
sshd
のトラブルシューティングこのような場合、一般的に非常に役に立つと思うのは、sshd
をデーモン化させずに起動することです。私の場合の問題は、syslog
も auth.log
も意味のあるものを示していないことでした。
ターミナルから起動すると、次のようになりました。
# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.
かなり良くなりました。このエラーメッセージのおかげで、何が間違っているのかがわかり、それを修正することができました。どちらのログファイルにもこの出力はありませんでした。
注意:少なくともUbuntuでは、sshd
の絶対パスの要求を満たすには、$(which sshd)
が最適な方法です。そうしないと、次のようなエラーが出ます: sshd reexec requires execution with an absolute path
.これは、潜在的に稼働している sshd
インスタンスと衝突しないようにするためです。ここでは、必ず空きポートを選択してください。
最後に、代替ポートに接続します(ssh -p 10222 user@server
)。
この方法は、認証の問題やその他の問題を発見するのに何度も役立ちました。stdoutに本当に詳細な出力をするには、
$(which sshd) -Ddddp 10222を使用してください (冗長性を高めるために
ddを追加していることに注意してください)。より詳細なデバッグを行うには、
man sshd` をチェックしてください。