sshあれらの事(2)-実戦
1745 ワード
sshのあれらの事(1)の中でいくつかsshの基本原理を総括して、この1篇は主にsshの基本的な操作を説明します.
1、公開鍵認証構成
a)鍵を生成する.
鍵の生成コマンドは次のとおりです.
パラメータ-tは鍵タイプを指定し、デフォルトはrsaであり、dsaタイプを指定することもできます.-f生成鍵の名前と格納経路を指定します.ここでは現在のディレクトリの下に置きます.-Cは注釈です.-bは鍵のビット数を指定し、2048ビットは比較的安全です.生成された鍵ファイル名はid_rsaとid_rsa.pub.
b)ユーザーがログインできるようにリモートマシンを構成する.
リモートマシンにログインし、権限がない場合は他の権限のある人にリモートマシンにログインさせ、前のステップで生成した公開鍵を$HOME/に追加する.ssh/authorized_keysディレクトリの下です.
c)構成が完了するとsshコマンドでログインできます.
sshポートがデフォルトポート22でない場合は、sshコマンドで-pパラメータで指定する必要があります.上記のコマンドで指定したポートは12345です.
2、ssh agent forwardingログイン
ssh(1)で説明したように、ssh agent forwardingの原理については、ここで簡単に説明します.ssh agentを使用してクライアントからサーバAにログインし、AからBにログインします.Aにはユーザー秘密鍵は保存されません.もちろん、AとBの$HOME/.ssh/authorized_keysファイルにはユーザーの公開鍵が必要です.具体的な手順は次のとおりです.
ユーザがAからsshコマンドを使用してBにログインした場合、サーバAのsshクライアントは、サーバA上に$SSH_が存在するかどうかを確認するだけであるAUTH_SOCKという環境変数は,存在する場合はこの変数で指定されたdomain socket通信を行うが,このdomain socketは実際にはAのsshdプロセスによって作成されるので,Aのsshクライアントは実際にはAのsshdプロセスと通信する.しかし、Aのsshdには秘密鍵情報がないので、sshdが行うことは、その要求をユーザのローカルマシンのsshクライアントに転送し、ローカルマシンのsshクライアントからローカルマシンのssh agentに転送することである.ローカルマシンのsshエージェントは,username,公開鍵および署名情報を含むメッセージを準備した後,前の経路でAのsshクライアントに返信する.
ログインプロセスから、主に$SSH_AUTH_SOCKという環境変数が働いています.ログイン中に他のパラメータを追加しない場合、この変数は自動的に生成されません.SSH Agent Forwardingという記事の方法を使用して設定できます.最善の方法は、ログイン時にAオプションを使用することです.以下に示すように、ログインサーバAにAパラメータを加えると、Aに$SSH_が自動的に生成されます.AUTH_SOCK変数、これでAからBに直接ログインできます.
1、公開鍵認証構成
a)鍵を生成する.
鍵の生成コマンドは次のとおりです.
ssh-keygen -t rsa -f ./id_rsa -C "[email protected]" -b 2048
パラメータ-tは鍵タイプを指定し、デフォルトはrsaであり、dsaタイプを指定することもできます.-f生成鍵の名前と格納経路を指定します.ここでは現在のディレクトリの下に置きます.-Cは注釈です.-bは鍵のビット数を指定し、2048ビットは比較的安全です.生成された鍵ファイル名はid_rsaとid_rsa.pub.
b)ユーザーがログインできるようにリモートマシンを構成する.
リモートマシンにログインし、権限がない場合は他の権限のある人にリモートマシンにログインさせ、前のステップで生成した公開鍵を$HOME/に追加する.ssh/authorized_keysディレクトリの下です.
cat ~/.ssh/id_dsa.pub | ssh yourname@ip 'cat - >> ~/.ssh/authorized_keys'
c)構成が完了するとsshコマンドでログインできます.
ssh -p12345 yourname@ip
sshポートがデフォルトポート22でない場合は、sshコマンドで-pパラメータで指定する必要があります.上記のコマンドで指定したポートは12345です.
2、ssh agent forwardingログイン
ssh(1)で説明したように、ssh agent forwardingの原理については、ここで簡単に説明します.ssh agentを使用してクライアントからサーバAにログインし、AからBにログインします.Aにはユーザー秘密鍵は保存されません.もちろん、AとBの$HOME/.ssh/authorized_keysファイルにはユーザーの公開鍵が必要です.具体的な手順は次のとおりです.
ユーザがAからsshコマンドを使用してBにログインした場合、サーバAのsshクライアントは、サーバA上に$SSH_が存在するかどうかを確認するだけであるAUTH_SOCKという環境変数は,存在する場合はこの変数で指定されたdomain socket通信を行うが,このdomain socketは実際にはAのsshdプロセスによって作成されるので,Aのsshクライアントは実際にはAのsshdプロセスと通信する.しかし、Aのsshdには秘密鍵情報がないので、sshdが行うことは、その要求をユーザのローカルマシンのsshクライアントに転送し、ローカルマシンのsshクライアントからローカルマシンのssh agentに転送することである.ローカルマシンのsshエージェントは,username,公開鍵および署名情報を含むメッセージを準備した後,前の経路でAのsshクライアントに返信する.
ログインプロセスから、主に$SSH_AUTH_SOCKという環境変数が働いています.ログイン中に他のパラメータを追加しない場合、この変数は自動的に生成されません.SSH Agent Forwardingという記事の方法を使用して設定できます.最善の方法は、ログイン時にAオプションを使用することです.以下に示すように、ログインサーバAにAパラメータを加えると、Aに$SSH_が自動的に生成されます.AUTH_SOCK変数、これでAからBに直接ログインできます.
ssh yourname@ip -A