LoginSignup
3
4

More than 3 years have passed since last update.

ホスト名指定するだけでSSH接続がしたい!

Last updated at Posted at 2020-08-28

目標

$ ssh <HostName>

だけでSSH接続がしたい! という記事だよ。

この記事の対象者(自己紹介)

  • Linuxコマンドはある程度わかる。
  • SSHって、あの、あれでしょ? なんか別マシンにログインするtelnetの安全なヤツ的な...
  • 突然SSHでログインしろって言われました。しかもユーザ名とかパスワードとか入力せずに、ホスト名指定だけでログインできるようにしろって...
  • ググったけど、接続元と接続先ってどっちがどっちだかわからなくなってきた...このコマンドどっちのマシンで打てばいいんだかもわからない...
  • 秘密鍵と公開鍵って、どっちのマシンにどっちを置けばいいんだこれ...

登場人物

AlphaServer
接続元(クライアント)のマシン。
初めにログインしている方。
SSHコマンドを打つ方。
Alice
Alphaのユーザ。
初めにこのユーザにログインしてる。
BravoServer
接続先(ホスト)のマシン。
SSHでログインされる方。
Bob
Bravoのユーザ。
SSHでこのユーザにログインする。
  • AlphaServer/ BravoServerはいずれもLinux。SSHはインストール済み。

結論

  1. 鍵ペアファイルを作成する
  2. 秘密鍵ファイルをAliceのホームディレクトリに設定する
  3. Bobのホームディレクトリに公開鍵ファイルを配置する
  4. BobAliceによるSSHログインを受け入れるよう設定する
  5. AliceのホームディレクトリにSSHログイン簡略化のためconfigファイルを配置する

以上だ!
これでAlice

[Alice@AlphaServer]
$ ssh BravoServer

と打つだけで、Bob@BravoServerにログインできるぞ!

各工程の詳解

鍵ペアファイルを作成する

[Alice@AlphaServer]
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): #鍵ファイル保存場所。そのままEnter
Created directory '~/.ssh'.
Enter passphrase (empty for no passphrase): #パスフレーズ。面倒なのでそのままEnter
Enter same passphrase agein: #パスフレーズ。面倒なのでそのままEnter
... #なんかわちゃーっと出てくるけど気にしない

これで、以下の鍵ペアファイルが生成されるぞ!
ちなみに、ファイルパスの"~"は「ログインユーザのホームディレクトリ」を表しているぞ!

[Alice@AlphaServer] ~/.ssh/id_rsa
秘密鍵ファイル。 →秘密鍵の解説
[Alice@AlphaServer] ~/.ssh/id_rsa.pub
公開鍵ファイル。 →公開鍵の解説

鍵ペアファイルについては、運用上以下のことを意識するんだ!

  • 鍵ペアは必ず対で使う。ほかの鍵ペアとはほぼ100%マッチしないぞ!
  • 鍵ペアは内容はさておき、ファイルとしてはただのテキストファイルだ!
  • 鍵ペアは生成ユーザやマシン、ファイル名なんかは気にする必要がないぞ!
    Carol@CharlieServerが生成したtemp_keyとtemp_key.pubをprivate.keypublic.keyにリネームして、AliceがSSHでBobにログインする際に使用する、ということも問題なくできるぞ!
  • 秘密鍵は門外不出だぞ! 生成するだけして、以降決して手を触れるんじゃない!
    移動したりコピーしたりし始めたら、なんか間違ってると思って立ち止まってくれ!
    Alice@AlphaServerで鍵ペアの生成を行ったのはこのためだ!
  • 公開鍵は別に秘密でも何でもないぞ! 外部に漏れたって平気だ! というかそのためのものだ!
  • 公開鍵はBob@BravoServerには必要だが、Alice@AlphaServerにとってはもはや不要だ! どこかにバックアップしておけば削除しても構わん!

秘密鍵ファイルをAliceのホームディレクトリに設定する

生成した秘密鍵を、Alice~/.ssh/id_rsa に配置するんだ!
基本的には、鍵ペアを生成した時点でこの工程は完了しているな!

本当はAliceが参照できる場所ならどこでもいいんだが、説明がややこしくなるからおとなしくホームディレクトリに配置しよう。

Bobのホームディレクトリに公開鍵ファイルを配置する

[Alice@AlphaServer]
$ ssh-copy-id -i ~/.ssh/id_rsa.pub Bob@BravoServer

これでBob@BravoServer~/.ssh/id_rsa.pubAlice@AlphaServer~/.ssh/id_rsa.pub がコピーされるぞ!
ついでに後の工程である「BobAliceによるSSHログインを受け入れるよう設定する」も一緒に実施されるぞ!
要するに、Bob@BravoServerに一度もログインすることなく全工程が完了してしまうのだ! らくちん!

ssh-copy-idコマンドがインストールされていない場合

困ったな!
stfpコマンドを使うなり、scpコマンドを使うなり、フリーソフトのFFFTPを使うなり、何でもいいからAlice@AlphaServer~/.ssh/id_rsa.pubBob@BravoServer~/.ssh/id_rsa.pub にコピーするんだ!

BobAliceによるSSHログインを受け入れるよう設定する

前工程「Bobのホームディレクトリに公開鍵ファイルを配置する」でssh-copy-idコマンドを使ったならこの工程は不要だ! よかったな!

ssh-copy-idコマンドがインストールされていない場合

[Bob@BravoServer]
$ echo ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub #やってもやらなくてもいい

を実行するんだ!

ここまでの工程を完了した段階で、AliceからBobにSSHログインすることはできるようになったぞ!
ただし、

[Alice@AlphaServer]
$ ssh Bob@BravoServer -i ~/.ssh/id_rsa -p 22

といろいろ指定する必要があってちょっとめんどくさいぞ!(本当はこの例では、一般的なファイル名およびポート番号であるため、オプションは省略しても勝手に補完してくれる)

AliceのホームディレクトリにSSHログイン簡略化のためconfigファイルを配置する

最後の正念場だ!
以下のファイルをAlice@AlphaServer~/.ssh/config に配置するんだ。

[Alice@AlphaServer]~/.ssh/config
Host BravoServer
    HostName BravoServer
    User Bob
    Port 22
    IdentityFile ~/.ssh/id_rsa

これで設定完了だ!

[Alice@AlphaServer]
$ ssh BravoServer

でログインできるぞ!

以上!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4