ホームページ >運用・保守 >Linuxの運用と保守 >Linux ssh ではどのような方法が使用されますか?

Linux ssh ではどのような方法が使用されますか?

王林
王林転載
2023-05-22 23:58:131324ブラウズ

openssh ソフトウェア パッケージには、次のコマンドが含まれています。

sshd —— ssh サーバー プログラム
sftp-server —— sftp サーバー プログラム (ftp に似ていますが、データ暗号化を提供します) プロトコル)
scp - 非対話型 sftp サーバー クライアント。サーバーへのファイルのアップロード/ダウンロードに使用されます。
sftp - 対話型 sftp サーバー クライアント。使用法は ftp コマンドと同じです。
slogin —— sshのエイリアス
ssh —— リモートシステムへのログインやコマンドのリモート実行に使用されるsshプロトコルのクライアントプログラム
ssh-add —— sshエージェント関連のプログラムSSH エージェントに追加するには dsakey
ssh-agent -- ssh Agent
ssh-keyscan -- ssh public keygenerator

ssh を使用する最も一般的な方法は、リモート ログインのために Telnet を置き換えることです。 。 Telnet のパスワード ログインとは異なり、ssh は公開キー、キーボード インタラクティブ、gssapi などの複数のログイン方法もサポートしています。システム パスワードを入力する方法が 1 つしかない Telnet とは異なります。現在、最も一般的に使用されているログイン方法は、従来のパスワードと公開キーによるログイン方法です。以下では、redhat as4 を例として、これら 2 つのログイン方法の使用法を説明します。

[root@mail ~]# ssh 172.18.6.227
ホスト「172.18.6.227 (172.18.6.227)」の信頼性を確立できません。
rsa キーのフィンガープリントは 43:80 :f2:e1:9b:b6:6e:c0:e2:dd:57:8f:ed:89:b3:81.
接続を続行してもよろしいですか (はい/いいえ)? はい
警告: 既知のホストのリストに「172.18.6.227」 (rsa) が永久に追加されました。
root@172.18.6.227 のパスワード:
最終ログイン: 木曜日 12 日 18:47:47 2007 から 172.18.6.130
[root@qmail ~]

#初めてログインした後、ssh はログイン ssh フィンガープリントをユーザーのホーム ディレクトリの .ssh ディレクトリの know_hosts ファイルに保存します。システムが再インストールされました。ssh フィンガープリントが変更されました。.ssh ディレクトリの know_hosts にある対応するフィンガープリントを削除してからログインし、ログインする前に「はい」と答えてください。 .ssh ディレクトリは「.」で始まる隠しディレクトリであり、これを表示するには ls –a パラメータが必要であることに注意してください。さらに、このディレクトリの権限は 700 である必要があり、ユーザーのホーム ディレクトリは他のユーザーに書き込み権限を与えることができません。そうしないと、ssh サーバーがログインを拒否します。ログインできない場合は、サーバー上のログ ファイル /var/log/secure を確認してください。ログインできない理由は、通常はすぐに見つかります。

ssh リモート実行コマンド:

[root@mail ~]# ssh 172.18.6.227 ls -l /
root@172.18.6.227 のパスワード:
合計 1244
drwxr-xr-x 2 ルート ルート 4096 6 月 26 日 04:02 ビン
drwxr-xr-x 4 ルート ルート 4096 3 月 29 日 11:17 ブート
drwxr-xr-x 2ルート root 4096 1 月 25 日 11:26 コマンド
drwxr-xr-x 15 ルート ルート 4096 6 月 12 日 20:09 データ
drwxr-xr-x 9 ルート ルート 5360 7 月 2 日 13:38 dev
drwxr- xr-x 87 ルート root 12288 jul 11​​ 04:02 etc
drwxr-xr-x 20 ルート root 4096 apr 10 10:54 home
drwxr-xr-x 2 ルート root 4096 aug 13 2004 initrd

正しいパスワードを入力すると、ssh はリモート サーバーの sshd サーバー プログラムに接続し、リモート サーバー上で
ls –l / コマンドを実行し、入力結果をローカル サーバーに送信します。これは、最初にリモート サーバーにログインし、次にコマンド ls –l / を実行し、最後にサーバーからログアウトすることと同じです。サーバーにログインして複数のコマンドを実行する必要がある場合は、コマンドを一重引用符または二重引用符で囲む必要があることに注意してください:

ssh 172.18.6.227 “cd /root && ls “

ssh のリモート実行コマンド機能は、オリジナルの r シリーズ コマンドを置き換えるために使用されます。ssh が登場する前は、システム管理者は同じ操作を実行するために、rexec や rsh などの安全ではないリモート実行コマンド ツールを使用する必要がありました。この機能は、多数のマシンを管理する場合に非常に便利です。たとえば、10.0.0.0/24 ネットワーク セグメント内のすべてのサーバーを再起動する場合、コマンドを入力するだけで済みます:

for i in $(seq 1 254); do ssh 10.0.0.${i} reboot ; doned

ですべてのサーバーの再起動操作を完了できます。ログインする必要はありませんが、そう言うかもしれません。各サーバーに毎回ログインする必要があり、初めてパスワードを入力するのは面倒です。心配しないでください。これから説明するのは、ssh 公開キー方式を使用してログインし、問題を解決することです。

公開キーを使用してログイン:

openssh の ssh-keygen コマンドは、このような秘密キーと公開キーを生成するために使用されます。

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
generate public/private dsa keyペア.
#プロンプトが生成されています。 4096 の長さです。時間がかかる場合があります。
キーを保存するファイルを入力してください (/root/.ssh/id_dsa):
#公開キーと秘密キーをどこに置くかを尋ね、Enter キーを押して使用します。デフォルトの場所
パスフレーズを入力してください (パスフレーズがない場合は空です):
#秘密キーのパスワードの入力を求めます。自動ログインを実現するには、パスワードを入力する必要はありません。Enter キーを押すだけです
同じパスフレーズを入力してくださいagain:
#もう一度パスワードの入力を求めるプロンプトを表示します。もう一度直接入力してください。
あなたの ID は /root/.ssh/id_dsa に保存されています。
あなたの公開キーは /root/.ssh/id_dsa に保存されています。 .pub.
#公開キーと秘密キーの入力を求めるプロンプトはすでに /root/.ssh/ ディレクトリに保存されています
キーのフィンガープリントは:
71:e5:cb:15:d3:8c:05: ed:05:84:85:32:ce:b1: 31:ce gucuiwen@myserver.com
#プロンプト キー フィンガープリント

手順:
-b 1024 公開キー/秘密キーを使用するペアの長さは 1024 バイト、最大 4096 バイト、通常は 1024 または 2048 で十分ですが、長すぎると暗号化と復号化に時間がかかります。
-t dsa dsa 暗号化方式を使用する公開鍵と秘密鍵のペア。dsa に加えて、rsa 方式もあります。rsa 方式の最小長は 768 バイト未満にすることはできません。
-c gucuiwen@myserver.com この公開キーと秘密キーのペアのコメントと説明。通常は所有者の電子メールに置き換えられます。省略しても構いませんが、その他のパラメータについては、man ssh-keygen を参照してください。

[root@mail ~]# ls -l /root/.ssh
total 16
-rw——- 1 ルート root 668 jul 12 20:07 id_dsa
-rw- r–r– 1 ルート root 611 jul 12 20:07 id_dsa.pub
-rw-r–r– 1 ルート root 222 jul 12 19:37 known_hosts

によって生成された公開キー/秘密キー ファイルユーザーのホームディレクトリの .ssh ディレクトリにある id_dsa.pub が公開鍵なので、生成した公開鍵をログインするサーバの対応するユーザーディレクトリのホームディレクトリの .ssh ディレクトリにアップロードします。ユーザー自身のディレクトリ (ホーム ディレクトリ) には、他のユーザーが書き込み可能なアクセス許可を持ってはなりません。.ssh ディレクトリのアクセス許可は 700 でなければなりません。つまり、ユーザー自身以外の誰もディレクトリの読み取り、書き込み、または表示のアクセス許可を持っていません。 ssh サーバーはログインを拒否します。 ssh のデフォルトの公開鍵ファイルは、ユーザーのホームディレクトリの .ssh ディレクトリにあるauthorized_keys ファイルであるため、生成された公開鍵は、このファイル名でサーバーの /root/.ssh/ ディレクトリに配置する必要があります。このファイルにはファイルを保存できます。クライアントの公開キー ファイルは、多数の錠前と、その錠を開けようとするさまざまな鍵を持つドアのようなものです。1 つの錠が開いていれば、ドアを開けることができます。サーバー上に配置すると次のようになります。

秘密キーには 600 のアクセス許可が必要です。そうでない場合、ssh サーバーはユーザーのログインを拒否します。

おおよそこんな感じです。次に、/etc/ssh/ssh_config と /etc/ssh/sshd_config の構成について説明します。

/etc/ssh/ssh_config:


host *
オプション「host」は、次の文字列と一致するコンピューターに対してのみ有効です。 「*」はすべてのコンピュータを示します。

forwardagent no
"forwardagent" は、認証エージェント (存在する場合) を通じて接続をリモート コンピューターに転送するかどうかを設定します。

forwardx11 no
"forwardx11" は、x11 接続が安全なチャネルと表示セットに自動的にリダイレクトされるかどうかを設定します。

rhostsauthentication no
「rhostsauthentication」は、rhosts ベースのセキュリティ認証を使用するかどうかを設定します。

rhostsrsaaauthentication no
「rhostsrsaauthentication」は、rsa アルゴリズムを使用した rhosts ベースのセキュリティ認証を使用するかどうかを設定します。

rsaauthentication yes
「rsaauthentication」は、セキュリティ検証に rsa アルゴリズムを使用するかどうかを設定します。

passwordauthentication yes
「passwordauthentication」は、パスワード認証を使用するかどうかを設定します。

fallbacktorsh no
「fallbacktorsh」は、ssh接続時にエラーが発生した場合に自動的にrshを使用するかどうかを設定します。

usersh no
「usersh」は、このコンピュータで「rlogin/rsh」を使用するかどうかを設定します。

batchmode no
「batchmode」が「yes」に設定されている場合、パスフレーズ/パスワード (対話型パスワード入力) プロンプトは無効になります。このオプションは、対話型のパスワード入力が不可能な場合のスクリプト ファイルやバッチ タスクに役立ちます。

checkhostip yes
「checkhostip」は、DNS スプーフィングを防ぐために、ssh がサーバーに接続されているホストの IP アドレスをチェックするかどうかを設定します。 「はい」に設定することをお勧めします。

stricthostkeychecking no
「stricthostkeychecking」が「yes」に設定されている場合、SSH はコンピューターのキーを「$home/.ssh/known_hosts」ファイルに自動的に追加せず、コンピューターのキーが生成されると、変更があった場合は接続を拒否します。

identityfile ~/.ssh/identity
"identityfile" は、ユーザーの RSA セキュリティ検証 ID を読み取るファイルを設定します。

port 22
「port」は、リモート ホストに接続するポートを設定します。

cipher bullfish
「cipher」は暗号化用のパスワードを設定します。

escapechar ~
"escapechar" はエスケープ文字を設定します。

/etc/ssh/sshd_config:


port 22
「port」は、sshd リスニング用のポート番号を設定します。

listenaddress 192.168.1.1
「listenaddress」は、sshd サーバーにバインドされる IP アドレスを設定します。

hostkey /etc/ssh/ssh_host_key

「hostkey」設定には、コンピューターの秘密キーを含むファイルが含まれます。

serverkeybits 1024
「serverkeybits」はサーバー キーのビット数を定義します。

loggingracetime 600
「loggingracetime」は、ユーザーが正常にログインできない場合に接続を切断するまでにサーバーが待機する必要がある時間 (秒単位) を設定します。

keyregenerationinterval 3600
「keyregenerationinterval」は、サーバーのキーが自動的に再生成されるまでの秒数を設定します (キーが使用されている場合)。キーの再生成は、傍受されたメッセージが盗まれたキーで復号化されるのを防ぐために使用されます。

permitrootlogin no
「permitrootlogin」は、root が ssh を使用してログインできるかどうかを設定します。このオプションは「yes」に設定しないでください。

ignorerhosts yes
「ignorerhosts」は、検証中に「rhosts」ファイルと「shosts」ファイルを使用するかどうかを設定します。

ignoreuserknownhosts yes
"ignoreuserknownhosts" は、rhostsrsaauthentication セキュリティ検証を実行するときに ssh デーモンがユーザーの "$home/.ssh/known_hosts" を無視するかどうかを設定します。

strictmodes yes
"strictmodes "ログイン要求を受信する前に、ssh がユーザーのホーム ディレクトリと rhosts ファイルの権限と所有権をチェックするかどうかを設定します。初心者はディレクトリやファイルを全員が書き込みアクセスできるように設定することが多いため、これが必要になることがよくあります。

x11forwarding no
「x11forwarding」は、x11 転送を許可するかどうかを設定します。

printmotd yes
「printmotd」は、ユーザーのログイン時に sshd が「/etc/motd」内の情報を表示するかどうかを設定します。

syslogfacility auth
「syslogfacility」は、sshd からのメッセージをログに記録するときに「ファシリティ コード」を付与するかどうかを設定します。

loglevel info
「loglevel」は、sshd ログ メッセージが記録されるレベルを設定します。情報は良い選択です。詳細については、sshd のマニュアル ページを参照してください。

rhostsauthentication no
「rhostsauthentication」設定は、セキュリティ検証に rhosts または「/etc/hosts.equiv」のみを使用するのに十分ですか。

rhostsrsaauthentication no
「rhostsrsa」は、rhosts または「/etc/hosts.equiv」と rsa を使用したセキュリティ検証を許可するかどうかを設定します。

rsaauthentication yes
「rsaauthentication」設定では、rsa セキュリティ検証のみが許可されます。

passwordauthentication yes
「passwordauthentication」は、パスワード認証を許可するかどうかを設定します。

permitemptypasswords no
「permitemptypasswords」は、パスワードが空のアカウントでのログインを許可するかどうかを設定します。

allowusers admin
"allowusers" の後には、任意の数のユーザー名一致文字列 (パターン) または user@host などの一致文字列を続けることができます。これらの文字列はスペースで区切られます。ホスト名には、DNS 名または IP アドレスを使用できます。

ssh2 互換形式の公開キーを openssh 互換形式に変換します

ssh-keygen -i -fidentity.pub >> /root/.ssh/許可されたキー2

以上がLinux ssh ではどのような方法が使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。