SSHは、リモートマシンに安全にログインしてコマンドを実行するためのネットワークプロトコルです。これは、別のコンピューターにリモートでアクセスするときに最高のセキュリティを提供するように設計および作成されています。データがコンピューターからネットワークに送信されるたびに、sshは自動的にデータを暗号化します。
SSHはクライアントサーバーモデルであるため、SSHを使用するには、宛先マシンにSSHサーバーアプリケーションがインストールされている必要があります。 SSHサーバーは、デフォルトで、標準のTCPポート22でリッスンします。SSHクライアントは、デフォルトですべてのLinuxディストリビューションで使用できます。
このチュートリアルでは、SSHコマンドについて学習します。 Linux 使用例付き。
前提条件
- SSHクライアント
- SSHサーバー
- リモートサーバーのIPアドレスまたは名前
1。リモートサーバーにSSHで接続する方法
リモートサーバーは、IPアドレスまたはホストの名前を使用して接続されます。 IPアドレスを使用してsshに接続するには、次のコマンドを使用します。
ssh [ IP ADDRESS]
名前を使用してsshに接続するには、次のコマンドを使用します。
ssh [ HOSTNAME ]
たとえば、IPアドレス192.168.239.133を使用してリモートホストに接続するには、コマンドは次のようになります。
$ ssh 192.168.239.133
最初にホストに接続すると、接続を続行するかどうかを尋ねるメッセージが表示されます。 「はい」と入力してから、リモートホストのパスワードを入力します。
2。ユーザー名を使用したSSH
SSHは、接続を試みるときにリモートサーバーの現在のユーザーを使用します。 usernameを使用してsshに接続するには、次の構文を使用します。
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
たとえば、kaliユーザー名を持つIPアドレス192.168.239.134でリモートホストに接続するには、次のコマンドを使用します。
$ ssh [email protected]
3。別のポート番号のSSH
SSHサーバーはデフォルトでTCPポート22をリッスンしますが、変更する場合は、コマンドでポートを指定する必要があります。
別のポート番号を使用してリモートホストに接続するには、次の構文に示すように-pフラグを使用します。
ssh [ IP ADDRESS/HOSTNAME ] -p [ PORT NUMBER ]
たとえば、ポート番号223を使用してIPアドレス192.168.239.134でリモートホストに接続するには、次のコマンドを使用します。
$ ssh 192.168.239.134 -p 223
4。パスワードなしのSSH
3つの簡単な手順で、パスワードなしでsshを使用してリモートホストに接続できます。パスワードを入力せずにリモートサーバーにログインするために必要な3つの手順は次のとおりです。
SSHキーを生成する
SSHキーを生成するには、公開キーと秘密キーを作成するssh-keygenを使用します。これらのキーペアは、クライアントとサーバー間の認証に使用されます。
キーのペアを作成するには、クライアントマシンで次のコマンドを入力します。
$ ssh-keygen -t rsa
場所と言い換えを入力するか、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]
たとえば、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
たとえば、IPアドレス192.168.239.134のサーバーからkaliユーザーの日付を取得するには、次のコマンドを使用します。
$ ssh [email protected] date
リモートサーバーのディスク容量の使用状況を確認するための構文は次のとおりです。
ssh USER1@SERVER1 'df -H'
たとえば、IPアドレス192.168.239.134のサーバーからkaliユーザーのディスク容量を取得するには、次のコマンドを使用します。
$ ssh [email protected] 'df -H'
リモートユーザーの最後の再起動ログを確認するには、次の構文を使用します。
ssh USER1@SERVER1 "last reboot"
たとえば、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アドレスが使用されているかわからない場合に使用されます。
たとえば、
$ 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]
たとえば、次のコマンドを実行して、ポート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]
たとえば、
$ 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]
たとえば、
$ 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オプションは、他のオプションと一緒に使用できます。
たとえば、
$ ssh -o "batchmode=yes" [email protected]
ssh -o "batchmode =yes"を使用する場合、パスワードなしの接続が有効になっていると、コマンドはリモートマシンで正常に実行されます。有効になっていないと、エラーが返されます。
次の表に、最も重要なコマンドラインオプションのいくつかを示します。
オプション | 説明 |
-A | 認証エージェント接続を転送できるようにします。 |
-a | 認証エージェント接続の転送を無効にします。 |
-b | 送信元アドレスをバインドするために使用されます。 |
-C | データ圧縮に使用されます。 |
-c cipher_spec | セッションを暗号化するための暗号仕様を選択します。 |
-D | 動的なアプリケーションレベルのポート転送を担当します。 |
-E log_file | 標準エラーの代わりにデバッグログをlog_fileに追加します。 |
-F構成ファイル | ユーザーごとの構成ファイルを指定します。 |
-g | リモートホストがローカルに転送されたポートに接続できるようにします。 |
-i Identity_file | 公開鍵認証用の秘密鍵を読み取ります。 |
-j | ProxyJump構成ディレクティブを指定します。 |
-l login_name | リモートマシンにログインするユーザーを指定します。 |
-pポート | リモートホストに接続するポートを指定するために使用されます。 |
-q | クワイエットモードです。 |
-V | 詳細モード。 |
-X | X11転送を有効にします |
-Y | 信頼できるX11転送を有効にします |
結論
このチュートリアルでは、sshコマンドの使用方法と便利な例を学びました。読んでいただきありがとうございます。以下のコメントセクションでフィードバックや提案を提供してください。