LinuxマシンにおけるSSHを利用したリモート接続の設定

自己所有のLinuxノートPCで自宅から職場のLinuxサーバにリモート接続したい。しかしその場合、公開鍵認証によるSSH接続しか許可されていない。一方、そのノートPCを職場内のLANに持ち込んで接続した場合には、そのサーバへのftpとtelnetによる接続が許可されている。

以上のような状況での設定方法をモデルケースとして述べたいと思います。

鍵の生成

クライアント側(ノートPC)でssh-keygenコマンドを使用して、公開鍵、秘密鍵を生成します:

$ ssh-keygen

生成された公開鍵(id_rsa.pub)と秘密鍵(id_rsa)は、~/.sshディレクトリの下に置かれます。ここで、「~」(チルダ)はホームディレクトリを表すもので、「/home/[アカウント名]」と同等です。.sshは隠しディレクトリで、デフォルトでは非表示状態なので注意してください。

秘密鍵のパーミッションの変更

SSHでは、秘密鍵と公開鍵のファイルのパーミッションが適切に制限されていることが要求されます。

$ chmod 600 ~/.ssh/id_rsa

公開鍵の登録とパーミッションの変更

ftpで公開鍵(id_rsa.pub)をサーバに転送します:

$ ftp [サーバのホスト名]
(中略)
ftp> put id_rsa.pub
ftp> quit

そのあと、telnetでサーバにログインし、authorized_keysに追記します:

$ telnet [サーバのホスト名]
(中略)
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ rm id_rsa.pub
$ exit

SSHによるリモート接続

SSHでリモート接続するには、引数に接続先を指定して、sshコマンドを実行します。

$ ssh [サーバのアカウント名]@[サーバのホスト名]

ポート番号を何も指定しなければ、SSHにおいて標準の22番がポートとして使われます。別のポート番号(例えば8022)の指定は「-p」オプションで行えます:

$ ssh -p 8022 [サーバのアカウント名]@[サーバのホスト名]

複数の鍵を運用する場合

ssh-keygenコマンドで既に生成した鍵とは別の鍵を生成したいとき、同じファイル名は上書きされますので注意してください。

一つのクライアントPCで複数のサーバにSSH接続する際、それぞれのサーバに対して別の鍵(秘密鍵と公開鍵のペア)を使う場合、クライアントPC側の秘密鍵のファイルは複数になります。

また、複数のクライアントPCで一つのサーバにSSH接続する際に、クライアントごとに異なる鍵を使う場合には、サーバ側の一つのautohrized_keysファイルに公開鍵を次々と追記していきます。

秘密鍵を何も指定しなければ、デフォルトでは~/.ssh/id_rsaが秘密鍵に使われます。複数の秘密鍵を使い分けたいときは、「-i」オプションで秘密鍵のファイルを指定します:

$ ssh -i ~/.ssh/[秘密鍵のファイル名] [サーバのアカウント名]@[サーバのホスト名]

ログイン時にパーミッションに関するエラーが表示される場合

ログイン時、

bad permissions: ignore key: /home/[アカウント名]/.ssh/id_rsa
Permission denied (publickey,gssapi-with-mic)

というようなエラーが表示された場合、秘密鍵(id_rsa)のパーミッションが適切に制限されていない可能性があります。また、

Authentication refused: bad ownership or modes for file
/home/[アカウント名]/.ssh/authorized_key

というようなエラーが表示された場合、公開鍵(authorized_keys)のパーミッションが適切に制限されていない可能性があります。

【theme : Linux
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示