GNU/Linux >> Linux の 問題 >  >> Linux

SSHコマンド

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 updatesudo 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の使用方法を知っている コマンドはリモートサーバーの管理に不可欠です。

ご不明な点がございましたら、下にコメントを残してください。


Linux
  1. LinuxでアクティブなSSH接続を見つける方法

  2. Ssh – Ssh / scp / sftpユーザーをディレクトリに制限しますか?

  3. SshによりWhileループが停止しますか?

  1. Perl Sshコマンドの特殊文字「#」?

  2. Sshを介したコマンドでTrueを使用しますか?

  3. DH GEX グループが範囲外です

  1. 複数のホストにSSHで接続し、コマンドを実行しますか?

  2. SSH - ~/.ssh/config ファイルに -t コマンドを含める方法

  3. SSH サーバーが起動するのを待つ Linux コマンド