![]() |
LINUX |
openssh-agent
・ssh接続で、ログインのたびにパスフレーズを入力しないですむ環境をつくる
・CentOSではX起動時にssh-agent環境を立ち上げる設定になっています
・クライアントのsshはrpmパッケージのopensshを使います
・"protocol2 PubkeyAuthentication"を使います
・鍵の作製は opensshクライアント を参照してください
・ログアウトするまでssh-agent環境が維持されるので注意
・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます
参照ファイル:opensshマニュアル etc.
:opensshクライアント
仮設定| :ローカルホスト | mars.528p.com |
| :ユーザ | sola |
| :サーバ | venus.528p.com |
| :ユーザ | sola |
| :サーバ | earth.528p.com |
| :ユーザ | sola |
ssh-agentの設定・CentOSではXの起動セッションでssh-agentの環境変数を設定するように試みられます
・ssh-addコマンドで秘密鍵をエージェントに登録するだけですみます
・ここではCUI(コンソール環境)と共存させるため、コメント行にします
:/etc/X11/xinit/xinitrc-common
・省略
# Prefix launch of session with ssh-agent if available and not already running.
#SSH_AGENT=
#if [ -x /usr/bin/ssh-agent -a -z "$SSH_AGENT_PID" ]; then
# if [ "x$TMPDIR" != "x" ]; then
# SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
# else
# SSH_AGENT="/usr/bin/ssh-agent"
# fi
#fi
・省略
:/home/sola/.bashrc
・.bashrcから読みこんでログイン時にssh-agentを起動させます
・CentOSでは .bash_profile で .bashrc を読みこむ設定になっています
・-s オプションは標準出力に Bourne shell を指定するためのものです
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
eval `ssh-agent -s`
fi
・再ログイン後、変数が設定されているか確認
[sola@mars:~]
$ echo $SSH_AGENT_PID
4138
$ echo $SSH_AUTH_SOCK
/tmp/ssh-bWPqTA4137/agent.4137
・秘密鍵を最初に登録しておけば2回目以降はパスフレーズを入力しないですみます
・スクリプトで秘密鍵の登録とsshコマンド入力の簡素化をします
・ssh-addは、~/.ssh/{id_rsa,id_dsa,identity}のどれかを読み込みます
・サーバ上でのコマンドの実行 (-tオプション)、sshログインを組みこんでいます
・その都度、秘密鍵を削除するなら"ssh-add -d"を有効にします
:/home/sola/bin/ssh-connect.sh (sola sola 700)
#!/bin/bash
if ! ssh-add -l > /dev/null 2>&1; then ssh-add fi
HOST=`basename $0` DOMAIN=`hostname -d`
case $1 in
root)
case $2 in
-s)
sftp -o Protocol=2 root\@$HOST.$DOMAIN ;;
-t)
shift
shift
ssh -2 -t root\@$HOST.$DOMAIN $* ;;
*)
shift
ssh -2 root\@$HOST.$DOMAIN $* ;;
esac ;;
-s)
sftp -o Protocol=2 $USER\@$HOST.$DOMAIN ;;
*)
ssh -2 $USER\@$HOST.$DOMAIN $* ;;
esac
#ssh-add -d
exit
使い方
/home/sola/binにパスを通します:/home/sola/.bash_profile
・省略
PATH=$PATH:$HOME/bin
/home/sola/binディレクトリにhost名のリンクをつくります
$ cd bin
[sola@mars:~/bin]
$ ln -s ssh-connect.sh venus
$ ln -s ssh-connect.sh earth
host名にスクリプト引数を指定して実行します・Ctrl+Cキーの必要なコマンドをroot権限で実行します
$ cd ~
[sola@mars:~]
$ venus root -t top
・一般コマンドをroot権限で実行します
$ venus root ls -a
・rootでログインします
$ venus root
・rootでsftpで接続します
$ venus root -s
・一般ユーザでログインします
$ venus
・一般ユーザでsftpで接続します
$ venus -s
サーバ間の移動・各サーバの/etc/ssh/ssh_configを修正します
・出発点のクライアントのssh_configも修正します
ForwardAgent yes
・サーバ間で移動してみる (各サーバは同じ公開鍵を使用)
・venusにはスクリプトがないのでsshコマンドを実行
[sola@mars:~] $ venus [sola@venus:~] $ ssh earth [sola@earth:~] $
![]() |
Copyright(c) 528p.com All Rights Reserved. |

