ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
電子計算機 > ソフト > システム > ユーザーIF > CUI/コマンドシェル
SSHプロトコルの実装の一つで、BSDライセンスに基づくフリーソフトウェアとして利用・配布されているもの。
OpenBSDプロジェクトによって開発されているオープンソースのSSH実装で、SSH実装の代表例である。
OpenSSHは、SSHバージョン1.3、1.5(SSH1)と、2.0(SSH2)のプロトコルに対応し、かつsftpのクライアントとサーバーに対応している。
OpenSSHでは、rlogin/telnetの代わりのssh、rcpの代わりのscp、ftpの代わりのsftpというクライアント側ソフトの一式を含み、さらにサーバー側のパッケージsshdや、ツールssh-add、ssh-agent、ssh-keysign、ssh-keyscan、ssh-keygen、sftp-serverなどを含む。
OpenSSHは、OpenBSD 2.6に初めて搭載された。以降、主としてOpenBSDを対象に開発が続いているが、他のプラットフォーム版もOpenSSH移植チーム(The OpenSSH Portability Team)によってメンテナンスされており、こちらは「Portable OpenSSH」という名で配布されている。
本家と移植版はバージョン番号で区別される。末尾のほうにp1のように「p」サフィックスが付くのが移植版で、例えば4.4を元に移植された最初の版は4.4p1のようになる。
OpenSSHには、意外と「嫌な感じのハマりポイント」があり、その原因究明が困難で無駄な時間を消耗し、解決後は不快な気分になりがちである。
ここでは「ホスト認証」をしたい場合の、簡単な設定方法と、注意点などを述べる。
説明にあたり、想定する環境を次に示す。
sshdの設定を確認および変更する。
特に重点的にチェックすべき項目は、次の通り。
これは標準の設定なので、特に変更は必要ない。どちらか決めうちで使いたい場合は、ssh2なら2、ssh1なら1のみを書く。
よく、「2,1とすると2が優先される」といった記述が公然と見られるが、嘘である。1,2と書いても2,1と書いても動作は変わらない。なぜなら、1か2かを選択するのはサーバー側ではなく、クライアント側だからである。
「パスワード無し」のホスト認証にしたい場合のみ、ここをnoにする。それ以外ではyesとする。
「パスワード無し」のホスト認証にしたい場合のみ、ここをyesにする。それ以外ではnoとする。
rootのログインを許可するかどうかの設定であるが、標準はnoである。
そもそも、ホスト認証でrootがログインする必要性自体皆無であり、そのような運用は全く推奨できない。
基本的には、このくらいを押さえておけば問題なく運用できるはずである。もしファイル名やディレクトリ名を変更して運用する場合は、その設定も行なうこと。
shostで続いて環境整備を行なう。user1でログインして行なう。基本作業を書くが、既にディレクトリがある等の場合、省略可能なものもある。
cd /home/user1
mkdir .ssh
chmod 700 .ssh
.sshディレクトリは、くれぐれもuser以外の+wパーミッションを立てないこと(+rや+xは良いので、755でも可)。さもないと認証で蹴られ、謎のログイン不能状態に悩むことになる。
クライアントで鍵を作り、公開鍵をサーバー側へ渡す必要がある。その方法は様々あるので、やりやすい方法を選択するべきであろう。
まずは、chostでの設定。user1でログインして行なう。
ssh-keygen -t dsa
このコマンドを使うと、DSAの鍵が作られる。RSAを使いたい場合は「-t rsa」とすればよい。もしSSH1のRSAが使いたいなら、「-t rsa1」である。
実行すると、次の三つのプロンプトが表示されるが、全てそのままEnterを押せばよい。ホスト認証の場合、大抵はパスワード無しでログインしたいケースであろうから、ここを空にするのである。
Enter file in which to save the key (/home/user1/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
実行すると、一番目のプロンプトに書かれた場所に鍵が作られる。この場合は、/home/user1/.sshの中に、id_dsaという秘密鍵と、id_dsa.pubという公開鍵が出来る。
次にすることは、公開鍵id_dsa.pubをサーバーに送る作業である。
scp id_dsa.pub shost:/home/user1/.ssh/id_dsa.pub
scpが使えない場合は、サーバーにログインし、viなどを使って編集すると良いだろう。クライアント側でcat id_dsa.pubなどとして表示し、それをクリップボードにコピー、サーバー側でペーストすればよい。
これで一通りの設定は完了した。
マシンを再起動するか、rootにsuして次のコマンドでsshdを再起動する。
/etc/rc.d/init.d/sshd restart
違う場所に置かれている場合は、適時対応すること。これが、停止、起動ともにOKとなれば再起動に成功している。
いよいよログインすることになる。
ssh host1
これで、パスワード無しでログインできたはずである。
ここで最もよく目にするエラーは、次のようなものである。
Permission denied (publickey,keyboard-interactive).
括弧の中は設定により変わるので、あまり気にする必要はない。この原因にはいくつかある。
最も単純なものは、鍵ファイルそのものが無い。次の盲点は、.sshのパーミッションの設定が甘い。特に.sshのパーミッションは分かりにくいので気をつけられたい。
どうしても見つからない不具合は、クライアント側で-vオプションをつけたり、サーバー側ではsshd_configの設定を「LogLevel DEBUG3」とし、syslogで結果を確認する、などがある。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます