sshでパススルー認証する設定まとめ

  • 25
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

サーバ管理していると、鍵登録したりする業務あるけど毎回一部忘れたりごっちゃになるので、まとめてみた。
現在のログインユーザとssh接続先のログインユーザが異なる場合にも、ユーザ、鍵指定なしで下記のような感じで簡単にsshログインするのが目的。

#毎回ユーザと鍵指定するの辛い。。。
$ ssh -l fuga -i ~/.ssh/fuga_id_dsa test1
↓ 
#これなら簡単
$ ssh test1

別の方法もあるだろうけど、この手順ならパスフレーズなし鍵作成から登録までして、サーバにホスト名またはIPだけでつなげるはず。

鍵作成

これはログインしたいユーザで実行する。
ログイン簡素化が目的なので、パスフレーズはなしで。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
c6:d1:b4:9d:48:a2:ad:39:26:03:ad:7e:e2:89:8f:0a xxx@xxx.local
The key's randomart image is:
+--[ RSA 2048]----+
|        . o      |
|   .   o = + .   |
|  . . . o + o    |
|   o   + .       |
|  . o = S        |
| .   + o         |
|E o .            |
|.+ +             |
|=.+              |
+-----------------+

#公開鍵の名前変更
$ cat id_rsa.pub >authorized_keys

#公開鍵のパーミッション変更
$ chmod 0600 authorized_keys

鍵登録の方法(ローカル・サーバ双方)

ローカルで作った鍵を使うかサーバで作った鍵を使うかで、手順分かれるので両方書く
環境やポリシによってどちらを使うかは分かれるけど、社内とかのテスト環境だと①が多くて、本番機やサービスは②が多いと思う

①ローカルで作った公開鍵をサーバに登録するパターン(githubとかこれ) ※自ユーザの公開鍵をサーバに登録
②サーバで作った秘密鍵をローカルに持ってくるパターン(通常のサーバだとこれかな) ※サーバ上ユーザの秘密鍵をローカルに取得

①ローカルで作った公開鍵をサーバに登録するパターン

ローカルで実施

$ scp ~/.ssh/authorized_keys [対象サーバ]:/tmp/
$vim ~/.ssh/config

Host ホストのIPまたはホスト名
  IdentityFile ~/.ssh/id_rsa #秘密鍵の場所(デフォルトならこれ)
  User 接続ユーザ名(自分)

サーバ上で実施

$ cat /tmp/authorized_keys >> ~/.ssh/authorized_keys

これで、ローカルから~/.ssh/configに登録したホストかIPで認証なしでパススルーログイン出来る

②サーバで作った秘密鍵をローカルに持ってくるパターン

ローカルで実施

$ scp [接続ユーザ名]@[対象サーバ]:~/.ssh/id_rsa(秘密鍵名) ~/.ssh/秘密鍵名(このフォルダはどこでもよい)
$vim ~/.ssh/config

Host ホストのIPまたはホスト名
  IdentityFile ~/.ssh/秘密鍵名 #秘密鍵の場所(home配下でなくてもよい)
  User 接続ユーザ名

これで、ローカルから~/.ssh/configに登録したホストかIPで認証なしで、別ユーザで簡略してパススルーログイン出来る

手順は簡単なんだけど、毎回ごっちゃになるのでメモとして。

おまけ

さらに、ssh test1を.bashrcでエイリアスとして切ってtest1と打つだけで繋げるようにすると楽。

alias test1='ssh test1'