SSHコマンド完全ガイド

ssh [-l ログイン名] ホスト名 | ユーザー@ホスト名 [コマンド]

ssh [-afgknqstvxACNTX1246] [-b バインドアドレス] [-c 暗号方式] [-e エスケープ文字] [-i IDファイル] [-l ログイン名] [-m MAC方式] [-o オプション] [-p ポート番号] [-F 設定ファイル] [-L ポート:ホスト:ホストポート] [-R ポート:ホスト:ホストポート] [-D ポート] ホスト名 | ユーザー@ホスト名 [コマンド]

ssh(SSHクライアント)はリモートホストにログインし、リモートホスト上でコマンドを実行するために使用されます。その目的はrloginとrshを置き換えることであり、同時に安全でないネットワークや相互に信頼できないホスト間で、暗号化された安全な通信接続を提供します。X11接続や任意のTCP/IPポートは、この安全なチャネルを介して転送(forward)できます。

ユーザーがsshを使用してホストhostnameに接続してログインすると、使用するプロトコルに応じて、リモートホストに対して自分の身元を証明する方法が異なります(詳細は'man -a ssh'を参照してください)。

(1).オプション

-1 sshがプロトコルバージョン1のみを使用するように強制します
-2 sshがプロトコルバージョン2のみを使用するように強制します
-4 sshがIPv4アドレスのみを使用するように強制します
-6 sshがIPv6アドレスのみを使用するように強制します
-a 認証エージェントの接続転送を無効にします
-A 認証エージェントの接続転送を許可します
エージェント転送は慎重に使用してください。一部のユーザーはリモートホスト上でファイルアクセス権を回避できる可能性があります(エージェントのUNIXドメインソケット(ソケット)のため)、転送された接続を介してローカルエージェントにアクセスできます。攻撃者はエージェントから鍵の内容を取得することは不可能ですが、鍵を操作し、エージェントにロードされたID情報を利用して認証を突破する可能性があります。
-b bind_address 複数のインターフェースまたはエイリアスアドレスを持つマシン上で、送受信インターフェースを指定します
-c blowfish|3des|des セッションの暗号化方式を選択します。3desがデフォルトアルゴリズムです。3des(トリプルDES)は3つの異なる鍵を使用して暗号化-復号化-暗号化という3回の演算を行い、比較的安全とされています。blowfishは高速なブロック暗号方式であり、非常に安全で3desより高速です。desはsshクライアントでのみサポートされており、古い3desをサポートしないプロトコルバージョン1との互換性を目的としています。その暗号アルゴリズム上の弱点により、使用を避けることを強くお勧めします。
-c cipher_spec さらに、プロトコルバージョン2では、カンマで区切られた優先順位付けされた暗号のリストを指定できます。詳細はCiphersを参照してください
-e ch|^ch|none ptyセッションのエスケープ文字(デフォルト文字は~)を設定します。エスケープ文字は行頭でのみ有効です。エスケープ文字の後にドット(.)を続けると接続が終了し、control-Zを続けると接続が一時停止(suspend)され、エスケープ文字自身を続けるとその文字が出力されます。この文字をnoneに設定するとエスケープ機能が無効になり、セッションが完全に透過的になります。
-f sshがコマンドを実行する前にバックグラウンドに移動するように要求します。これはsshがパスワードまたはパスフレーズの入力を求めるが、ユーザーがバックグラウンドで実行したい場合に使用されます。このオプションは-nオプションを暗黙的に含みます。リモートホスト上でX11プログラムを起動する推奨方法は、ssh -f host xtermのようなコマンドです
-g リモートホストがローカルで転送されたポートに接続することを許可します
-i identity_file RSAまたはDSA認証に必要なID(秘密鍵)ファイルを指定します。デフォルトファイルはプロトコルバージョン1の$HOME/.ssh/identity、およびプロトコルバージョン2の$HOME/.ssh/id_rsaと$HOME/.ssh/id_dsaファイルです。設定ファイルで各ホストごとにIDファイルを個別に指定することもできます。複数の-iオプションを同時に使用できます(設定ファイルでも複数のIDファイルを指定できます)
-I smartcard_device スマートカードデバイスを指定します。パラメータはデバイスファイルであり、sshはこれを使用してスマートカードと通信します。スマートカードにはユーザーのRSA秘密鍵が保存されています
-k KerberosチケットとAFSトークンの転送を無効にします。設定ファイルで各ホストごとにこのパラメータを設定できます
-l login_name リモートホストにログインするユーザーを指定します。設定ファイルで各ホストごとにこのパラメータを設定できます
-m mac_spec さらに、プロトコルバージョン2では、カンマで区切られた優先順位付けされたMAC(メッセージ認証コード)アルゴリズムのリストを指定できます。詳細はMACsをキーワードとして検索してください
-n stdinを/dev/nullにリダイレクトします(実際にはstdinからのデータ読み取りを防止します)。sshをバックグラウンドで実行する場合、このオプションは必須です。一般的な使用法はX11プログラムをリモートで実行することです。例えば、ssh -n server.example.com emacs &はserver.example.com上でemacsを起動し、同時に暗号化チャネルを介してX11接続を自動的に転送します。sshはバックグラウンドで実行されます(ただし、sshがパスワードまたはパスフレーズを要求する場合、この方法は機能しません。-fオプションを参照)
-N リモートコマンドを実行しません。ポート転送(プロトコルバージョン2に限定)に使用されます
-o option ここでいくつかのオプションを指定できます。形式は設定ファイル内の形式と同じです。これはコマンドラインスイッチがないオプションを設定するために使用されます
-p port リモートホストのポートを指定します。設定ファイルで各ホストごとにこのパラメータを設定できます
-q 静寂モード。すべての警告と診断情報を削除します
-s リモートシステムにサブシステムのアクティブ化を要求します。サブシステムはSSH2プロトコルの機能であり、sftpなどの他のアプリケーションがSSHを安全な経路として使用できるように支援します。サブシステムはリモートコマンドで指定されます
-t 仮端末の割り当てを強制します。リモートマシンで全画面(スクリーンベース)のプログラムを実行できるため、非常に便利です。例えば、メニューサービスなど。連続する-tオプションは、sshがローカル端末を持っていなくても端末の割り当てを強制します
-T 仮端末の割り当てを禁止します
-v 円長モード。sshが実行状況に関するデバッグ情報を出力させます。接続、認証、設定の問題をデバッグする際に非常に役立ちます。連続する-vオプションは冗長レベルを増加させます。最大3つまで
-x X11転送を無効にします
-X X11転送を許可します。設定ファイルで各ホストごとにこのパラメータを設定できます
X11転送は慎重に使用してください。ユーザーがリモートホスト上でファイルアクセス権を回避できる場合(ユーザーのX認証データベースに基づいて)、転送された接続を介してローカルX11ディスプレイにアクセスできます。攻撃者はこれを利用してキーボード入力の監視などのアクションを取ることができます
-C データ圧縮(stdin、stdout、stderr、および転送されたX11とTCP/IP接続のデータを含む)を要求します。圧縮アルゴリズムはgzip(1)と同じです。プロトコルバージョン1では、圧縮レベル'level'はCompressionLevelオプションで制御されます。圧縮技術はモデム回線やその他の低速接続で役立ちますが、高速ネットワークでは逆に速度低下を引き起こす可能性があります。設定ファイルで各ホストごとにこのパラメータを設定できます。Compressionオプションも参照してください
-F configfile ユーザーレベルの設定ファイルを指定します。コマンドラインで設定ファイルが指定された場合、システムレベルの設定ファイル(/etc/ssh/ssh_config)は無視されます。デフォルトのユーザーレベル設定ファイルは$HOME/.ssh/configです
-L port:host:hostport ローカルマシン(クライアント)の特定のポートをリモートマシンの特定のポートに転送します。動作原理は、ローカルマシンがportポートでソケットを監听し、このポートに接続があると、その接続が安全なチャネルを介して転送され、同時にリモートホストとhostのhostportポート間に接続が確立されるというものです。ポート転送は設定ファイルで指定できます。特権ポートを転送できるのはrootのみです。IPv6アドレスは別の形式で指定します:port/host/hostport
-R port:host:hostport リモートホスト(サーバー)の特定のポートをローカルマシンの特定のポートに転送します。動作原理は、リモートホストがportポートでソケットを監听し、このポートに接続があると、その接続が安全なチャネルを介して転送され、同時にローカルマシンとhostのhostportポート間に接続が確立されるというものです。ポート転送は設定ファイルで指定できます。特権ポートを転送できるのは、リモートホストにrootでログインした場合のみです。IPv6アドレスは別の形式で指定します:port/host/hostport
-D port ローカルマシンでの「動的」アプリケーションポート転送を指定します。動作原理は、ローカルマシンがportポートでソケットを監听し、このポートに接続があると、その接続が安全なチャネルを介して転送され、アプリケーションのプロトコルに基づいてリモートホストがどこに接続するかが判断されます。現在サポートされているのはSOCKS4です。動的ポート転送は設定ファイルで指定できます

(2).設定ファイル

/etc/ssh/ssh_config

詳細は'man -a ssh_config'のヘルプドキュメントを参照してください

(3).使用例

Ubuntu20.04でDebian11に接続する、またはDebian11でUbuntu20.04に接続する。最初に行うべきは22番ポートを開放することです。Ubuntu20.04のファイアウォール設定ファイルは/etc/ufw/rules.xmlにあり、Debian11の設定ファイルは/etc/firewalld/zones/public.xmlにあります。その後、ファイアウォールサービスを再起動します。Ubuntu20.04ではufw reloadを使用し、Debian11ではsystemctl restart firewalldを使用します。

まずUbuntu20.04からDebian11に接続する例を示します

[user@ubuntu ~]$ ssh admin@192.168.1.100
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdef.
ECDSA key fingerprint is MD5:12:34:56:78:90:ab:cd:ef:12:34:56:78:90:ab:cd:ef.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.1.100' (ECDSA) to the list of known hosts.
admin@192.168.1.100's password: 
Last login: Tue May 15 14:30:22 2023
[admin@debian ~]$ ls
Documents  Downloads  Music  Pictures  Public  Templates  Videos
[admin@debian ~]$ exit    //リモートから退出
logout
Connection to 192.168.1.100 closed.
[user@ubuntu ~]#

次にDebian11からUbuntu20.04に接続する例を示します

[ admin@debian ~ ]# ssh 192.168.1.101
admin@192.168.1.101's password:
Last login: Wed Jun 20 16:45:10 2023
[admin@ubuntu ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[admin@ubuntu ~]$ exit    //リモートから退出
登出
Connection to 192.168.1.101 closed.
[ admin@debian ~ ]# 

(4).SSHのデフォルトポートの変更または追加

詳細は「SSHのカスタムポート設定ガイド」を参照してください

タグ: SSH linux ネットワーク セキュリティ リモート接続

7月31日 01:33 投稿