忘れないようにメモっとく

機械学習とかプログラミングとか。

Linuxのssh設定 ~ centos ~

新しいサーバー建てる度にググるのめんどうだからメモっとく。
公開鍵をサーバーに置いて、秘密鍵を使ってクライアントからログインするところまで。

  1. 鍵ペアをクライアント側で作成
  2. 公開鍵をサーバーへ
  3. sshサーバー設定
  4. ユーザー追加
  5. クライアント設定

鍵ペアをクライアント側で作成

# 鍵ペア作成
$ cd ~/.ssh
$ ssh-keygen -t rsa

ssh-keygenでは、デフォルトでid_rsa.pub(公開鍵)とid_rsa(秘密鍵)が作られる。
ファイル名を指定するときは、

$ ssh-keygen -t rsa -f hoge
# >> hoge.pub & hoge

公開鍵をサーバーへ

$ scp id_rsa.pub root@remoteserver.com:~/

サーバー建てた後はrootでログインできたり、コンソールログで操作できると思うので、何かしらの方法で、サーバーにログインする。

# rootでログイン
$ ssh root@remoteserver.com

サーバーにログインしたら、~/.sshディレクトリを作る(無ければ)

$ mkdir -p ~/.ssh
# パーミッション変更
$ chmod 700 ~/.ssh

sshサーバーは公開鍵を~/.ssh/authorized_keysに置く

$ cd ~/.ssh
$ cat id_rsa.pub > authorized_keys
# パーミッション変更
$ chmod 600 authorized_keys

sshサーバー設定

基本的にrootログインとか、パスワードログインはできないほうがいいので、その辺りを設定する。

$ vim /etc/ssh/sshd_config

# rootログイン禁止
PermitRootLogin no

# パスワードログイン禁止(鍵使う)
PasswordAuthentication no

# sshサーバーをリスタート
$ /etc/rc.d/init.d/sshd restart

ユーザー追加

centosにhogeuserを作成する。

# ユーザー追加
$ useradd hogeuser

# パスワード設定
$ passwd hogeuser

# hogeuserをwheelグループに追加
$ usermod -G wheel hogeuser

# wheelグループにsudoを許可
$ visudo

# %wheel        ALL=(ALL)       ALL
# 次のように変更
 %wheel        ALL=(ALL)       ALL

ユーザーの確認は、cat /etc/passwd でできる。
ここまでできたら、ログアウトしてクライアントの設定。

クライアント設定

ログインできるか試してみる。

$ ssh -i ~/.ssh/id_rsa hogeuser@remoteserver.com

コマンド長くて、しちめんどくさいので、~/.ssh/configに書いとく。

$ vim ~/.ssh/config

Host hoge
User hogeuser
HostName remoteserver.com
IdentityFile ~/.ssh/id_rsa

これで楽チンログイン。

$ ssh hoge