SSHは、リモートマシンに安全にログインしてコマンドを実行するためのネットワークプロトコルです。 これは、別のコンピューターにリモートでアクセスするときに最高のセキュリティを提供するように設計および作成されています。 データがコンピューターからネットワークに送信されるたびに、sshは自動的にデータを暗号化します。
SSHはクライアントサーバーモデルであるため、SSHを使用するには、宛先マシンにSSHサーバーアプリケーションがインストールされている必要があります。 SSHサーバーは、デフォルトで、標準のTCPポート22でリッスンします。SSHクライアントは、デフォルトですべてのLinuxディストリビューションで使用できます。
このチュートリアルでは、 SSHコマンド の Linux 使用例付き。
前提条件
- SSHクライアント
- SSHサーバー
- リモートサーバーのIPアドレスまたは名前
リモートサーバーは、IPアドレスまたはホストの名前を使用して接続されます。 IPアドレスを使用してsshに接続するには、次のコマンドを使用します。
ssh [ IP ADDRESS]
名前を使用してsshに接続するには、次のコマンドを使用します。
ssh [ HOSTNAME ]
にとって example、IPアドレス192.168.239.133を使用してリモートホストに接続するには、コマンドは次のようになります。
$ ssh 192.168.239.133
最初にホストに接続すると、接続を続行するかどうかを尋ねるメッセージが表示されます。 yesと入力し、リモートホストのパスワードを入力します。
2.ユーザー名を使用したSSH
SSHは、接続を試みるときにリモートサーバーの現在のユーザーを使用します。 usernameを使用してsshに接続するには、次の構文を使用します。
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
にとって example、kaliユーザー名を持つIPアドレス192.168.239.134でリモートホストに接続するには、次のコマンドを使用します。
$ ssh [email protected]
3.別のポート番号でSSHを使用する
SSHサーバーはデフォルトでTCPポート22をリッスンしますが、変更する場合は、コマンドでポートを指定する必要があります。
別のポート番号を使用してリモートホストに接続するには、次の構文に示すように-pフラグを使用します。
ssh [ IP ADDRESS/HOSTNAME ] -p [ PORT NUMBER ]
にとって example、ポート番号223を使用して192.168.239.134のIPアドレスでリモートホストに接続するには、次のコマンドを使用します。
$ ssh 192.168.239.134 -p 223
4.パスワードなしのSSH
3つの簡単な手順で、パスワードなしでsshを使用してリモートホストに接続できます。 パスワードを入力せずにリモートサーバーにログインするために必要な3つの手順は次のとおりです。
SSHキーを生成する
SSHキーを生成するには、公開キーと秘密キーを作成するssh-keygenを使用します。 これらのキーペアは、クライアントとサーバー間の認証に使用されます。
キーのペアを作成するには、クライアントマシンで次のコマンドを入力します。
$ ssh-keygen -t rsa
Enter 場所と言い換え、またはEnterキーを押してデフォルト設定を使用します。
公開SSHキーをコピーする
キーペアを使用するには、公開SSHキーをリモートサーバーにコピーする必要があります。 公開SSHキーをリモートサーバーにコピーするには、ホストマシンで次の構文を使用します。
ssh-copy-id [USERNAME]@[HOSTNAME/IP ADDRESS]
SSHキーをIPアドレス192.168.239.134からコピーするには、次のコマンドを使用します。
$ ssh-copy-id [email protected]
パスワードなしでリモートログイン
これで、次のコマンドを使用して、パスワードなしでリモートサーバーにログインできます。
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
にとって example、kaliユーザー名を持つIPアドレス192.168.239.134でリモートホストに接続するには、次のコマンドを使用します。
$ ssh [email protected]
5.SSHを使用してリモートサーバーでコマンドを実行します
sshコマンドを使用して、リモートサーバーにログインできます。 また、リモートサーバーでコマンドを実行するために使用することもできます。
sshでコマンドを実行するための基本的な構文は次のとおりです。
ssh USER1@SERVER1 COMMAND1
ssh USER1@SERVER1 'COMMAND2'
ssh USER1@SERVER1 'COMMAND1 | COMMAND2'
ssh ADMIN@BOX1 "COMMAND1; COMMAND2; COMMAND3"
リモートサーバーの日付と時刻を取得するには、次の構文を使用します。
ssh USER1@SERVER1 date
にとって example、IPアドレス192.168.239.134のサーバーからkaliユーザーの日付を取得するには、次のコマンドを使用します。
$ ssh [email protected] date
リモートサーバーのディスク容量使用量を確認するための構文は次のとおりです。
ssh USER1@SERVER1 'df -H'
にとって example、IPアドレス192.168.239.134のサーバーからkaliユーザーのディスクスペース使用量を取得するには、次のコマンドを使用します。
$ ssh [email protected] 'df -H'
リモートユーザーの最後の再起動ログを確認するには、次の構文を使用します。
ssh USER1@SERVER1 "last reboot"
にとって example、IPアドレス192.168.239.134のサーバーからkaliユーザーの最後の再起動ログを取得するには、次のコマンドを使用します。
$ ssh [email protected] "last reboot"
SSHコマンドラインオプション
sshコマンドで利用できるオプションのいくつかを見てみましょう。
ssh -C
次の構文に示すように、リモートサーバーから受信または転送されたすべてのデータの圧縮を要求するには、sshで-Cオプションを使用します。
ssh -C
[USERNAME]@[HOSTNAME/IP ADDRESS]
例えば、
$ ssh -C [email protected]
ssh -v
-vオプションは、sshクライアントをデバッグするためにsshコマンドとともに使用されます。 構文は次のとおりです。
$ ssh -v [USERNAME]@[HOSTNAME/IP ADDRESS]
例えば、
$ ssh -v [email protected]
ssh -b
-bオプションは、IPアドレスをSSH接続にバインドするために使用されます。 IPアドレスは、SSH接続の送信元アドレスとして使用されます。 これは、クライアントに3つ以上のIPアドレスがあり、SSHサーバーへの接続を作成するためにどのIPアドレスが使用されているかわからない場合に使用されます。
にとって example、
$ ssh -b 192.168.239.133 [email protected]
このコマンドは、IPアドレスをリモートサーバーにバインドします。 を使用して確認できます netstat |grep ssh
接続を確認するコマンド。
ssh -F
-Fオプションは、ユーザーごとの構成を指定するためにsshコマンドとともに使用されます。 デフォルトの設定ファイルは〜/ .ssh / configです。
特定の構成ファイルを使用するには、次のように-Fオプションを使用します。
$ ssh -F [File Location] [USERNAME]@[HOSTNAME/IP ADDRESS]
例えば、
$ ssh -F /etc/ssh/ssh_config.d [email protected]
ssh -L
-Lオプションは、ローカルポート転送に使用されます。 ローカルポートフォワーディングを使用すると、プロキシを介してホストから宛先ポートにトラフィックをルーティングできます。
ローカルポート転送の基本的な構文は次のとおりです。
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATIONPORT [USERNAME]@[HOSTNAME/IP ADDRESS]
にとって example、次のコマンドを実行して、ポート3336のローカルホスト192.168.239.133からIP192.168.239.134でkaliユーザーのポート3306のリモートホストに接続します。
$ ssh -L 3336:192.168.239.133:3306 [email protected]
ssh -R
-Rオプションは、SSHコマンドとともに使用され、リモートポート転送を有効にします。 これは、リモートサーバーのポートをローカルマシンのポートに転送し、次に宛先マシンのポートに転送できることを意味します。
リモートポートフォワーディングの基本的な構文は次のとおりです。
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT
[USERNAME]@[HOSTNAME/IP ADDRESS]
にとって example、
$ ssh -R 3336:192.168.239.133:3000 [email protected]
このコマンドは、sshにポート3336のsshサーバーをリッスンさせ、すべてのトラフィックを3000ポートにトンネリングします。
ssh -C -D
-Dオプションは、動的ポート転送を有効にします。 通常のSOCKSポートは1001ですが、任意のポート番号を使用できます。 それにもかかわらず、一部のプログラムは1001ポートでのみ動作します。
動的転送の基本的な構文は次のとおりです。
ssh -D [LOCAL_IP:]LOCAL_PORT [USERNAME]@[HOSTNAME/IP ADDRESS]
にとって example、
$ sudo ssh -C -D 1001 [email protected]
-Dは1001ポートでの動的ポート転送を指定し、-Cは圧縮を有効にします。
ssh -X
-Xオプションは、X11転送のsshとともに使用されます。 X11転送の構文は次のとおりです。
ssh -X [USERNAME]@[HOSTNAME/IP ADDRESS]
次のコマンドを使用して、IPアドレス192.168.239.134のkaliユーザーでX11転送を有効にします。
$ ssh -X 192.168.239.134
ssh -Y
-Yオプションは、TrustedX11転送のsshとともに使用されます。 これは、リモートX11が元のX11ディスプレイに完全にアクセスできることを意味します。
ssh -Y [USERNAME]@[HOSTNAME/IP ADDRESS]
次のコマンドを使用して、IPアドレス192.168.239.134のkaliユーザーでTrustedX11転送を有効にします。
$ ssh -Y 192.168.239.134
ssh -o
-oオプションは、他のオプションと一緒に使用できます。
にとって example、
$ ssh -o "batchmode=yes" [email protected]
ssh -o “batchmode = yes”を使用する場合、パスワードなしの接続が有効になっていると、コマンドはリモートマシンで正常に実行されます。有効になっていないと、エラーが返されます。
次の表に、最も重要なコマンドラインオプションのいくつかを示します。
オプション | 説明 |
-A | これにより、認証エージェント接続を転送できます。 |
-a | 転送される認証エージェント接続を無効にします。 |
-b | 送信元アドレスをバインドするために使用されます。 |
-C | データ圧縮に使用されます。 |
-ccipher_spec | セッションを暗号化するための暗号仕様を選択します。 |
-D | 動的なアプリケーションレベルのポート転送を担当します。 |
-E log_file | 標準エラーの代わりにデバッグログをlog_fileに追加します。 |
-F構成ファイル | ユーザーごとの構成ファイルを指定します。 |
-g | これにより、リモートホストがローカルに転送されたポートに接続できるようになります。 |
-i Identity_file | 公開鍵認証用の秘密鍵を読み取ります。 |
-j | ProxyJump構成ディレクティブを指定します。 |
-l login_name | リモートマシンにログインするユーザーを指定します。 |
-pポート | リモートホストに接続するポートを指定するために使用されます。 |
-q | クワイエットモードです。 |
-V | 冗長モード。 |
-バツ | X11転送を有効にします |
-Y | 信頼できるX11転送を有効にします |
結論
このチュートリアルでは、sshコマンドの使用方法と便利な例を学びました。 読んでいただきありがとうございます。以下のコメントセクションでフィードバックや提案を提供してください。