ssh のパスワード認証を使いたい。
ssh で鍵登録は場合によって面倒くさい。
パスワードは弱いってのはわかる。でもシェルを実行するユーザごとに鍵をつかったり鍵管理は煩雑になる。
sshpass コマンド
ssh の認証をパスワードで、シェルコマンドでおこなえるコマンドが作られていた。それがsshpass
apt install sshpass
使い方
使い方も超簡単です。基本的な使い方は次の通り。
sshpass -p 'MySecretPassword' ssh username@example.com
シェルコマンドの実行に便利
SSH経由でリモートサーバーにログインをしてコマンドを実行したいときにパスワード認証でぱぱっと作ることが出来る。
私はこれをつかって raspi を一斉に更新したり、raspiに動画再生させたりしてる。手軽で便利すぎ
#!/usr/bin/env bash function get_pass(){ ## ここで何かパスワード取り出し処理 } MY_PASSWORD=$( get_pass ) sshpass -p MY_PASSWORD ssh username@example.com /usr/local/sbin/remote_command
利用上の注意点
SSHdにパスワードログインを許可するのは基本的に危険。
SSHのパスワード認証は総当りで絶対突破されると思ったほうが良い。
そのためパスワード認証を有効にするときは /etc/ssh/sshd_config
でサーバーへのパスワードをローカルIPに限定するなどの処理を書いておくほうが無難。ルーターがミライに乗っ取られたときはアウトだけど・・・
PasswordAuthentication no ## 指定アドレスからのSSHログインのみに限定する match address 192.168.0.* PasswordAuthentication yes ## 指定ユーザにだけSSHパスワードログインを許可する ### ユーザ名にも総当りされないようにランダムキーを含めたほうが無難 match user my-own-admin-5ooOuA8bXKesVqCQ PasswordAuthentication yes
他にもポートを変えるとか
# What ports, IPs and protocols we listen for Port 2223 Port 2222
他にも iptables recent を有効にするとか、Listenアドレスからv6を外すとか、あれこれ対策をした上でパスワードを使ったほうが良いと思います。
関連資料
- SSHをSFTPに制限して、ディレクトリを制限(chroot)した専用アカウントを作る - それマグで!
- ssh をiptablesで国内限定にする(日本国外のIPから規制する) - それマグで!
- 外からは公開鍵、内側だけはパスワード許可 - sshd の ローカル側だけパスワードを使えるようにする。 - それマグで!
- SSH総当たり防止策をiptablesのrecentモジュールでやる - それマグで!
参考資料
https://unix.stackexchange.com/questions/38737/ssh-login-with-clear-text-password-as-a-parameter
関連アイテム
OpenSSH[実践]入門 Software Design plus
- 作者: 川本安武
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/05
- メディア: Kindle版
- この商品を含むブログ (3件) を見る