VPSや仮想マシンを複数台持っていて、手元の1台からSSHログインする際にパスワード入力の手間を減らすtipsです。Linux、ないしはMacOSから異なるLinuxサーバにログインする際に、ユーザー名とパスワードを入力してSSHログインするのは面倒なので、SSHクライアント鍵を用いて、パスワード無しでログインする方法です。パスワードなしと言っても、公開鍵を使っている分、こちらの方がセキュアです。
本作業はLinuxサーバを作ると必ず実施する作業なので、備忘録として。出典は『Linuxサーバ Hacks――プロが使うテクニック & ツール 100選』の#67『さらに高速なsshログイン』です。この本、既に出版から10年近く経っているにも関わらず、読んでみると楽しいんですね。
前提条件
- 手元のPC、リモートのサーバ共に、同一のユーザー名を利用している事
最初に一度だけ実施すれば良い作業
- SSHクライアント鍵の作成
- ssh `basename $0` $*を仕込んだショートカットファイルの準備
- .bashrcショートカットまでのパスを通す
# id_rsa.pubが無いときだけ実行 ssh-keygen -t rsa # ~/serversディレクトリに、ssh-toファイルを作成する。 mkdir ~/servers echo 'ssh `basename $0` $*' > ~/servers/ssh-to chmod 500 ~/servers/ssh-to echo 'export PATH=$PATH:~/servers' >> ~/.bashrc
サーバ構築のたびに実施する作業
普段使いのMacなり、良くログインするLinuxサーバなりで実施してください。windows上のcygwinなどでも良いと思います。
- 新規サーバ構築時に1度のみ実行する。
- ssh `basename $0` $*を仕込んだショートカットファイルの準備
- .bashrcショートカットまでのパスを通す
# 環境に合わせて書き換えてください export NEW_SERVER_IP="192.168.2.110" export NEW_SERVER_NAME="new_hostname" # hostsに上記のIPとホスト名を追記して # 名前解決できるようにする echo "$NEW_SERVER_IP $NEW_SERVER_NAME" | sudo tee -a /etc/hosts # 対象サーバに対して、~/.sshディレクトリを作成して、 # そこに、ssh-keygen実行時に出来たid_rsa.pubの中身をauthorized_keysとして転送する ssh $NEW_SERVER_NAME "mkdir .ssh; chmod 0700 .ssh" scp ~/.ssh/id_rsa.pub $NEW_SERVER_NAME:.ssh/authorized_keys # 最後に、ソフトリンクを貼る ln -s ~/servers/ssh-to ~/servers/$NEW_SERVER_NAME
使用例
- 新規サーバ構築時に1度のみ実行する。
- ssh `basename $0` $*を仕込んだショートカットファイルの準備
- .bashrcショートカットまでのパスを通す
# ssh で引数にコマンドを付けると対象ホストで実行可能なのを再現。 lasas@server1:~$ new_hostname df # Filesystem 1K-blocks Used Available Use% Mounted on # udev 1013324 0 1013324 0% /dev # tmpfs 204904 4624 200280 3% /run # /dev/vda1 20959232 2613380 18345852 13% / # tmpfs 1024516 0 1024516 0% /dev/shm # tmpfs 5120 0 5120 0% /run/lock # tmpfs 1024516 0 1024516 0% /sys/fs/cgroup # tmpfs 204904 0 204904 0% /run/user/1000 # # 単純にSSHログインするのみ lasas@server1:~$ new_hostname # Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64) # # * Documentation: https://help.ubuntu.com/ # # System information as of Sun May 10 14:39:21 JST 2015 # # System load: 0.03 Processes: 99 # Usage of /: 12.5% of 19.99GB Users logged in: 0 # Memory usage: 20% IP address for eth0: 192.168.2.110 # Swap usage: 0% # # Graph this data and manage this system at: # https://landscape.canonical.com/ # # 7 packages can be updated. # 7 updates are security updates. # # Last login: Sun May 10 14:38:44 2015 from 192.168.2.111 lasas@new_hostname:~$