私はここで多くのSSH接続拒否投稿を読んで、それを書いた後も読み続けます。しかし、私のコンピュータで動作することを望みながら、すべてのソリューションを盲目的に試みるのではなく、私の失敗を記録したいと思います。解決プロセスを削除します。
目的:SSHルートを使用して自分のサーバーにログインする
質問:
$ ssh [email protected]
ssh: connect to host 123.456.78.911 port 22: Connection refused
コンテキストサーバー:Digital Ocean(VM - 月5ドル)
OS:Windows 10、Linuxサブシステム、Ubuntu Bash、Linuxサブシステム
OpenSSH - クライアントとサーバーの両方のインストールファイアウォール -
クォータにSSHDを追加する(入力と出力)
トラブルシューティングプロセス
編集:詳細モード出力が追加されました。
ssh -v [email protected]
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to xxx.xxx.xx.xxx [xxx.xxx.xx.xxx] port 22.
debug1: connect to address xxx.xxx.xx.xxx port 22: Connection refused
ssh: connect to host xxx.xxx.xx.xxx port 22: Connection refused
以前は
このコンピュータから私のサーバーに接続していましたが、今月初めに工場の初期化を実行する必要がありました。最初に問題が生じたときにどのように解決したか覚えていません(1年前でした)。 DOがサーバー側でSSHを有効にしたと確信しているので、秘密鍵と公開鍵が間違って配置され、ファイルパスをどこかで変更する必要があるようです。 WindowsでUbuntuを使用すると、ファイルの場所に問題があったことを覚えています。
別の認証ファイルに公開鍵と秘密鍵を追加する必要がありますか?それとも主な場所ですか?
答え1
まず、何が起こるべきかについての基本を理解します。
WindowsデスクトップのSSHクライアントプロセスは、DigitalOcean VMのTCPポート22に接続する必要があります。接続が確立されたら、root
SSHキーを使用してユーザーを認証する必要があります。
これは不要sshd
(または「sshサービス」)を意味します。許可したい場合にのみ必要です。記入デスクトップにSSHで接続します。
「接続が拒否されました」というメッセージが表示されます。これは次のいずれかを意味します。
- クラウドVMの正しいIPアドレスがない可能性があります。 (クラウド VM の場合、VM 内部で表示できるローカル IP アドレスは、クラウド インフラストラクチャがインターネットに提供するアドレスと異なる場合があります。)
- ローカルネットワークは、ローカルネットワーク外のサービスにアクセスするためにプロキシを使用する必要があるかもしれません(職場ネットワークで一般的です)。
- Digital Ocean VMがまったく実行されない可能性があります。
- クラウド内の仮想マシンのファイアウォールは、許可されたソースIPアドレスが指定されるまで着信SSH接続を許可しない可能性があります。
- クラウド仮想マシンでSSHサービスを有効にするには、Digital OceanのWeb UI / APIを使用する必要があります。
仮想マシンのSSHポートへのデフォルトのTCP接続を確立できる場合は、認証のトラブルシューティングを続行できます。
クラウド仮想マシンでパスワード認証ログインを許可する例とても悪い考えSSHポートへのアクセスが既知のIPアドレスに制限されていない場合は、SSH対応ホストを見つけるためにインターネットを検索してくださいroot
。
sshd
root
(SSHサービス)他のユーザーに対してパスワード認証を有効にしても、直接ログインを拒否したり、キー認証のみを許可したりする特別な設定もあります。この設定はクラウドサービスに強くお勧めします。
複数の人が仮想マシンを維持している場合は、個々のユーザーアカウントでログインすると、ログを使用して必要に応じてsudo
誰が何をしたのかを簡単に確認できます。クラウド プロバイダーは、root
初期ログイン以外の特定のユーザー アカウントを使用する必要があります。正常に接続してrootアクセス権を取得したら、必要に応じて仮想マシンを構成できます。
通常、クラウドプロバイダーは、仮想マシンへの初期SSHアクセス用に事前生成されたSSH秘密鍵を提供します。可能なキーファイル形式にはいくつかあります。*.ppk
PuTTY用のファイル、一般的な無料のWindows SSHクライアント(現在のLinuxでも利用可能)、id_*
OpenSSH用の特定のサフィックスがないファイルです。通常、キーはそのキー生成ツールを使用してある形式から別の形式に変換することがPuTTYgen keyfile.ppk -O private-openssh -o id_openssh
できます(ファイルをOpenSSH形式に変換するなど)。*.ppk
WSLのコマンドラインSSHクライアントを使用している場合、これはOpenSSHの一形態です。通常、OpenSSHはローカルユーザーホームディレクトリのサブディレクトリ(.ssh
使用されているアルゴリズムに応じて、id_rsa
などと呼ばれる)で主秘密鍵を探します。これらの秘密鍵ファイルが存在し、鍵ベースの認証が許可されている場合、クライアントは自動的にそのファイルをリモートサーバーに提供します。id_dsa
id_ecdsa
id_ed25519
WSLでは、Unixスタイルのホームディレクトリの場所が明確ではない可能性があるため、この-i
オプションを使用して使用する秘密鍵ファイルを明示的に指定する必要があります。
鍵認証を使用するときに正しいユーザー名を指定する必要があるため、SSHコマンドは次のようになります。
ssh -i /some/where/id_digitalocean_privatekey [email protected]
答え2
まあ、まず。この設定は使用しないでください。実際、あなたはそのMACをまったく使用したくありません!
パスワード確認を有効にしてみましたか?これが動作することを確認するには? /var/log/auth.logも確認しましたか? /etc/sshd/sshd_configでsshdロギングの詳細を増やしましたか?
私にとっては、sshdデーモンがポート22で正しくリッスンしていないことがさらに懸念されます。そのため、接続が拒否されます。 nmap を使用して、ポートが実際に開いていることを確認できます。
sudo nmap -sSV -O -p 22 -v9 destination_IP