Secure Shell(SSH)は、クライアントとサーバー間の暗号化された接続に使用される暗号化ネットワークプロトコルです。 sshクライアントは、リモートマシン上のSSHサーバーへの安全な接続を作成します。暗号化された接続を使用して、サーバー、X11トンネリング、ポート転送などでコマンドを実行できます。
無料と商用の両方で利用可能なSSHクライアントが多数あり、OpenSSHが最も広く使用されているクライアントです。 Linux、OpenBSD、Windows、macOSを含むすべての主要なプラットフォームで利用できます。
この記事では、OpenSSHコマンドラインクライアント(ssh
)の使用方法について説明します。 )リモートマシンにログインしてコマンドを実行するか、他の操作を実行します。
OpenSSHクライアントのインストール#
OpenSSHクライアントプログラムはssh
と呼ばれます ターミナルから呼び出すことができます。 OpenSSHクライアントパッケージは、scp
などの他のSSHユーティリティも提供します およびsftp
ssh
と一緒にインストールされます コマンド。
LinuxへのOpenSSHクライアントのインストール#
OpenSSHクライアントは、デフォルトでほとんどのLinuxディストリビューションにプリインストールされています。システムにsshクライアントがインストールされていない場合は、配布パッケージマネージャーを使用してインストールできます。
UbuntuおよびDebianへのOpenSSHのインストール#
sudo apt update
sudo apt install openssh-client
CentOSおよびFedoraへのOpenSSHのインストール#
sudo dnf install openssh-clients
Windows 10へのOpenSSHクライアントのインストール#
ほとんどのWindowsユーザーは、Puttyを使用してSSH経由でリモートマシンに接続しています。ただし、最新バージョンのWindows 10には、OpenSSHクライアントとサーバーが含まれています。どちらのパッケージも、GUIまたはPowerShellを介してインストールできます。
OpenSSHパッケージの正確な名前を見つけるには、次のコマンドを入力します。
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
コマンドは次のようなものを返す必要があります:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
パッケージ名がわかったら、次のコマンドを実行してインストールします。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
成功すると、出力は次のようになります。
Path :
Online : True
RestartNeeded : False
macOSへのOpenSSHクライアントのインストール#
macOSには、デフォルトでインストールされているOpenSSHクライアントが付属しています。
ssh
の使用方法 コマンド#
SSH経由でリモートマシンにログインするには、次の要件を満たす必要があります。
- SSHサーバーがリモートマシンで実行されている必要があります。
- SSHポートはリモートマシンのファイアウォールで開いている必要があります。
- リモートアカウントのユーザー名とパスワードを知っている必要があります。アカウントには、リモートログインのための適切な権限が必要です。
ssh
の基本構文 コマンドは次のとおりです:
ssh [OPTIONS] [USER@]:HOST
ssh
を使用するには コマンドを実行し、ターミナルまたはPowerShellを開いて、ssh
と入力します。 その後にリモートホスト名が続きます:
ssh ssh.linuxize.com
SSH経由でリモートマシンに初めて接続すると、次のようなメッセージが表示されます。
The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
各ホストには、~/.ssh/known_hosts
に保存されている一意のフィンガープリントがあります ファイル。
yes
と入力します リモート指紋を保存すると、パスワードの入力を求められます。
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.
[email protected]'s password:
パスワードを入力すると、リモートマシンにログインします。
ユーザー名が指定されていない場合、ssh
コマンドは現在のシステムログイン名を使用します。
別のユーザーとしてログインするには、ユーザー名とホストを次の形式で指定します。
ssh username@hostname
ユーザー名は-l
で指定することもできます オプション:
ssh -l username hostname
デフォルトでは、ポートが指定されていない場合、SSHクライアントはポート22でリモートサーバーに接続しようとします。一部のサーバーでは、管理者がデフォルトのSSHポートを変更して、自動化のリスクを軽減することでサーバーにセキュリティの層を追加しています。攻撃。
デフォルト以外のポートに接続するには、-p
を使用します ポートを指定するオプション:
ssh -p 5522 username@hostname
認証または接続の問題が発生している場合は、-v
を使用してください ssh
に通知するオプション デバッグメッセージを印刷するには:
ssh -v username@hostname
冗長性のレベルを上げるには、-vv
を使用します または-vvv
。
ssh
コマンドはいくつかのオプションを受け入れます。
すべてのオプションの完全なリストについては、ssh
をお読みください。 man ssh
と入力してmanページ ターミナルで。
SSH構成ファイル#
日常的にSSH経由で複数のリモートシステムに接続している場合、すべてのリモートIPアドレス、異なるユーザー名、非標準ポート、およびさまざまなコマンドラインオプションを覚えておくのは、不可能ではないにしても難しいことに気付くでしょう。
OpenSSHクライアントは、ユーザーごとの構成ファイル(~/.ssh/config
)で設定されたオプションを読み取ります )。このファイルには、接続するリモートマシンごとに異なるSSHオプションを保存できます。
SSH構成の例を以下に示します:
Host dev
HostName dev.linuxize.com
User mike
Port 4422
ssh dev
と入力してsshクライアントを呼び出す場合 、コマンドは~/.ssh/config
を読み取ります ファイルを作成し、開発ホストに指定された接続の詳細を使用します。この例では、ssh dev
次と同等です:
ssh -p 4422 [email protected]
詳細については、SSH構成ファイルの記事を確認してください。
公開鍵認証#
SSHプロトコルは、さまざまな認証メカニズムをサポートしています。
公開鍵ベースの認証メカニズムを使用すると、パスワードを入力しなくてもリモートサーバーにログインできます。
この方法は、認証に使用される暗号化キーのペアを生成することによって機能します。秘密鍵はクライアントデバイスに保存され、公開鍵はログインする各リモートサーバーに転送されます。リモートサーバーは、キー認証を受け入れるように構成する必要があります。
ローカルマシンにSSHキーペアがまだない場合は、次のように入力してSSHキーペアを生成できます。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
安全なパスフレーズを入力するように求められます。パスフレーズを使用するかどうかは、あなた次第です。
キーペアを取得したら、公開キーをリモートサーバーにコピーします。
ssh-copy-id username@hostname
リモートユーザーのパスワードを入力すると、公開鍵がリモートユーザーのauthorized_keys
に追加されます。 ファイル。
キーがアップロードされると、パスワードの入力を求められることなく、リモートサーバーにログインできます。
キーベースの認証を設定することで、ログインプロセスを簡素化し、サーバー全体のセキュリティを強化できます。
SSHトンネリングまたはSSHポート転送は、クライアントとサーバーマシンの間に暗号化されたSSH接続を作成する方法であり、これを介してサービスポートを中継できます。
SSH転送は、VNCやFTPなどの暗号化されていないプロトコルを使用するサービスのネットワークデータの転送、地理的に制限されたコンテンツへのアクセス、または中間ファイアウォールのバイパスに役立ちます。基本的に、任意のTCPポートを転送し、安全なSSH接続を介してトラフィックをトンネリングできます。
SSHポートフォワーディングには次の3つのタイプがあります。
ローカルポートフォワーディング#
ローカルポート転送を使用すると、クライアントホストからSSHサーバーホストに接続を転送してから、宛先ホストポートに接続を転送できます。
ローカルポートフォワーディングを作成するには、-L
を渡します ssh
のオプション クライアント:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
-fオプションは、ssh
に通知します バックグラウンドで実行するコマンドと-N
リモートコマンドを実行しないでください。
リモートポートフォワーディング#
リモートポートフォワーディングは、ローカルポートフォワーディングの反対です。サーバーホストからクライアントホストにポートを転送し、次に宛先ホストポートに転送します。
-R
オプションはssh
に指示します リモートポートフォワーディングを作成するには:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
動的ポート転送#
動的ポート転送は、さまざまなポート間での通信を可能にするSOCKSプロキシサーバーを作成します。
動的ポート転送(SOCKS)を作成するには、-D
を渡します。 sshクライアントのオプション:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
詳細と詳細な手順については、SSHトンネリング(ポートフォワーディング)の設定方法に関する記事を確認してください。
結論#
SSH経由でリモートサーバーに接続するには、ssh
を使用します コマンドの後にリモートユーザー名とホスト名(ssh username@hostname
。
ssh
の使用方法を知っている コマンドはリモートサーバーの管理に不可欠です。
ご不明な点がございましたら、下にコメントを残してください。