SSHは、Linuxサーバーにリモートで接続するための主要な手段として使用される安全なプロトコルです。リモートシェルを生成することにより、テキストベースのインターフェイスを提供します。接続後、ローカル端末に入力したすべてのコマンドがリモートサーバーに送信され、そこで実行されます。
認証
クライアントは通常、パスワードまたはSSHキーのいずれかを使用して認証します。パスワードは安全性が低いため、sshキーを常にお勧めします。
SSHキーを使用して認証するには、ユーザーはローカルコンピューターにSSHキーペアを持っている必要があります。リモートサーバーでは、公開鍵をユーザーのホームディレクトリ内の~/.ssh/authorized_keys
にあるファイルにコピーする必要があります。 。このファイルには、このアカウントへのログインが許可されている公開鍵のリストが1行に1つずつ含まれています。
SSHキーペアの生成
公開鍵と秘密鍵の組み合わせを生成する
ssh-keygen
# With options (Larger Number of Bits 4096 and file name)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix
# Explicit comment
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix -C citizix_key
上記のコマンドは、RSASSHキーペアを生成します。ファイルの場所が指定されていない場合は、.ssh
に配置されます。 ユーザーのホームディレクトリ内の隠しディレクトリ。デフォルトのファイルは次のとおりです。
-
~/.ssh/id_rsa
:秘密鍵。このファイルを共有しないでください! -
~/.ssh/id_rsa.pub
:関連する公開鍵。これは、結果なしに自由に共有できます。
秘密鍵のパスフレーズの削除または変更
秘密鍵のパスフレーズを生成し、それを変更または削除する場合は、次のコマンドを使用します。
ssh-keygen -p
ssh-keygen -p -f ~/.ssh/id_citizix
変更する古いパスフレーズを入力します。次に、新しいパスフレーズの入力を求められます。または、Enterキーを押して空のままにすることもできます。
SSHキーのフィンガープリントを確認する
各SSHキーペアは、キーを一意に識別するために使用できる単一の暗号化「フィンガープリント」を共有します。 SSHキーのフィンガープリントを確認するには、次のように入力します。
ssh-keygen -l
ssh-keygen -l -f ~/.ssh/id_citizix
公開SSHキーをサーバーにコピーする
公開鍵をリモートサーバーにコピーすると、パスワードなしでログインできるようになります:
# This will prompt for a password
ssh-copy-id [email protected]_host
パスワードを入力すると、〜/ .ssh / id_rsa.pubキーの内容がユーザーアカウントの〜/ .ssh/authorized_keysファイルの最後に追加されます。パスワードなしでログインできるようになりました:ssh [email protected]_host
SSH-Copy-IDを使用せずに公開SSHキーをサーバーにコピーする
ssh-copy-idユーティリティを使用できないが、リモートサーバーへのパスワードベースのSSHアクセスがある場合は、公開鍵の内容を別の方法でコピーできます。
-
コンテンツをリモートサーバーの
~/.ssh/authorized_keys
の下部にコピーします ファイル。 -
キーの内容を出力して、sshコマンドにパイプすることができます。
~/.ssh/authorized_keys
に追加します ファイル。cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
その他のハック
秘密鍵から公開ssh鍵を生成します:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
リモートサーバーでの単一コマンドの実行
ssh [email protected]_host command_to_run
別のポートでサーバーにログインする
ssh -p port_num [email protected]_host
構成ファイルの使用:
# File ~/.ssh/config
Host remote_alias
HostName remote_host
Port port_num
パスフレーズの入力を回避するためのSSHエージェントへのSSHキーの追加
SSH秘密鍵にパスフレーズがある場合、リモートホストに接続するためにパスフレーズを使用するたびに、パスフレーズを入力するように求められます。
これを繰り返し行う必要がないように、SSHエージェントを実行できます。この小さなユーティリティは、パスフレーズを初めて入力した後、秘密鍵を保存します。ターミナルセッション中は利用できるため、将来、パスフレーズを再入力せずに接続できます。
SSHエージェントを開始するには、ローカルターミナルセッションに次のように入力します。
eval $(ssh-agent)
次に、秘密鍵をエージェントに追加して、エージェントが鍵を管理できるようにします。
ssh-add
ssh-add -f ~/.ssh/id_citizix
パスフレーズを入力する必要があります(パスフレーズが設定されている場合)。その後、IDファイルがエージェントに追加され、パスフレーズを再入力しなくても、キーを使用してサインインできるようになります。
サーバーで使用するSSHクレデンシャルの転送
パスワードなしで別のサーバー内から1つのサーバーに接続できるようにする場合は、SSHキー情報を転送する必要があります。これにより、ローカルコンピューターの資格情報を使用して、接続しているサーバーを介して別のサーバーに対して認証できるようになります。
SSHエージェントを起動し、SSHキーをエージェントに追加する必要があります。次に、オプション-A
を使用して最初のサーバーに接続します このセッションの資格情報をサーバーに転送するには
ssh -A [email protected]_host