40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

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のファイルを編集する

emacshttp://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のファイルが見れるようになりましたー

エンジニアでないし、独学であれこれ勉強してきた自分としては、ここまで出来るようになった自分にちょっとビックリ