こんにちは、私のsshに問題があります。これは魔法のように動作を停止し、その理由を理解できませんでした。それが与えるメッセージは次のとおりです。
ssh: connect to Host <Host> port 22: Connection refused
dmesg
を書き込んでもエラーメッセージは表示されませんが、telnet localhost 22
からフォローしています
Trying 127.0.0.1...
telnet: Unable to connect to remote Host: Connection refused
私はいくつかの同様のケースで見た解決策を試しました [1] と [2]
>> Sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
>> Sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
コマンドを入力する前でも問題ありませんでした。私もsshを再起動しようとしましたが、何も変わりませんでした
>>netstat -a | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:20128 *:* LISTEN
tcp 0 0 localhost:17600 *:* LISTEN
tcp 0 0 localhost:20129 *:* LISTEN
tcp 0 0 localhost:17603 *:* LISTEN
tcp 0 0 localhost:21128 *:* LISTEN
tcp 0 0 deathstar:domain *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 *:db-lsp *:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 [::]:db-lsp [::]:* LISTEN
私は他に何を試すべきかわからないので、これで問題を解決するのに十分であることを願っています。
@Ashuのコメントの後に残りが追加されます
Sudo lsof -i | grep ssh
何も起こらなかった
>>netstat -l --numeric-ports | grep 22
unix 2 [ ACC ] STREAM LISTENING 1618183 @jack-com.canonical.Unity.Master.Scope.files.T1731348652205882
>>Sudo iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
@TheSchwaのコメントの後のEddited
>>ps aux | grep sshd
jack 3711 0.0 0.0 15944 2220 pts/26 S+ 14:08 0:00 grep --color=auto sshd
私は最初にsshを削除して再インストールしようとしましたが、それは私のために機能しませんでした、それから私はそれをパージしようとしました:
Sudo apt-get purge openssh-server
Sudo apt-get install openssh-server
だから今は動作しています。
TCPエラー「接続拒否」は、このIPアドレスでアクティブなホストが存在するが、接続しようとしていたポート(sshの場合22)が開いていないことを意味します。
まず、ホスト名またはIPアドレス、あるいはその両方を再確認してください。
最も可能性の高い理由は、誰かがsshデーモンを停止したか、誰かがデフォルトの22の代わりに代替ポートを使用するように設定したことです。
サーバーに物理的にアクセスできる場合は、そのサーバーにログオンし、コマンドSudo netstat -tupan
を入力します。理想的には、次のような行が表示されるはずです。
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1053/sshd
Sshdを起動したり、ポート22でリッスンするように設定されているかどうかを確認したりしない場合。
編集
注目すべきビットは次のとおりです。
:22
-ポート22
LISTEN
-ポート22で着信接続を実行し、予期しているプロセスがあります
sshd
-プロセスの名前。
そのような行が表示されない場合は、おそらくsshサーバーが適切に構成されておらず、起動に失敗しています。フォアグラウンドで実行してトラブルシューティングを行う方法については、 このページ を試してください。
サーバーのファイアウォールはポートを開くように構成されていますが、接続への応答を待機しているものはありません。
Sshd(sshデーモン)をインストールして実行する必要があります...
次の理由によりSSH接続が拒否されました-
デフォルトのport(22)は他のものに変更されました。/etc/ssh/sshd_configファイルでポートの変更を確認します。
LAN上のIPの競合。 arpingコマンドを使用して、競合を特定します。 dhcpプールを参照してください。
sshポートはip-tables/firewallで許可されていません。 iptables/firewallを確認して許可します。
*多くのキーとパスを変更するため、sshパッケージのアンインストール/再インストールはお勧めできません。
これを引き起こす最も一般的な問題の1つは、sshdサービス自体です。実際に実行されているかどうかを確認しましたか?また、iptablesを直接編集していることに気づいたので、ufw/firewalldを実行している場合は、同様に確認してください。
また、sshサーバーが正しいIPを実行しており、FQDNが正しいIPアドレスにルーティングされていることを確認してください。
このように不足しているディレクトリを作成する必要があります
mkdir /var/run/sshd
chmod 0755 /var/run/sshd
次に、次のコマンドで障害のあるshhサーバーを起動します。
service ssh start
以上です!