Virtual Box上のDebianに公開鍵認証でsshする
それなりにLinuxのことは勉強してわかっていたつもりなのですが、ちょいちょいはまったのでメモ
まずはパスワード認証できるか確認
VirtualBox上で動作させているDebianですが
BoxManage modifyvm "debian" --natpf1 "guestssh,tcp,,50022,,22"
という感じのポートフォワード設定しているため、ホストとなるMacのターミナルで
ssh - 50022 localhost
※2011年9月12日 上記だとポート指定されていないのでコマンドとして正しくなかったですね。。正しくはこう↓でした
ssh -p 50022 localhost
とやることでパスワードによる認証は出来ることを確認しておきました。
公開鍵認証の設定
ssy-keygenと入力して、秘密鍵と公開鍵生成されて、後はVirtual Box上のDebianにscpすればOKだから、楽勝ーとおもったけど
「scpの接続先のリモートホストの指定ってどうやるんだろう??」
としばし悩んだのですが、上記通りポートフォワード設定しているのでscpのオプションでポート指定すればOKということについさっき気づきました
ssh-keygen scp -P 50022 ~/.ssh/id_rsa.pub userid@localhost:/home/userid/.ssh/ chmod 600 authorized_keys2 cat id_rsa.pub >> authorized_keys2 rm id_rsa.pub
これで
ssh - 50022 localhost
とすればパスワード入力しなくてもOKになりました
emacs上でVirtualBox上のDebianのファイルを編集する
emacsにhttp://www.gnu.org/s/tramp/:TRAMPを以前導入していたのでemacs上で
C-x C-f /ssh:userid@localhost:/home/userid
としたのですが、怒られてしまいました。。。
ふと冷静に考えたらこれだと22番ポートに対してsshしているからダメっていうのに気づき
まず、~/.ssh/config に
Host 適当な名前
HostName ホスト名
Port SSHポート番号
(User ユーザ名)
を書きます。
複数ある場合は、このパターンを繰り返します。
SSH のポート番号が 22 じゃないときに Carbon Emacs で tramp を使用するまでの流れより
というのを参考にして~/.ssh/config に以下を追加
Host debian
HostName localhost
Port 50022
その上で
C-x C-f /sshx:userid@localhost:/home/userid
としたら、無事にVirtualBox上のDebianのファイルが見れるようになりましたー
エンジニアでないし、独学であれこれ勉強してきた自分としては、ここまで出来るようになった自分にちょっとビックリ