PCをいじったときのメモ
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
SSHを使って、他のマシンにアクセスする。
以下、
・SSHの超基本。
・公開鍵を使う。
・公開鍵使用に伴う留意点。
・さらに便利に使う方法。
の順に説明をする。
参考:SSHの鍵管理
DSA認証の設定方法
OpenSSHと製品版SSH混在環境での公開鍵認証の設定について
ssh-agent - 公開鍵認証の鍵管理
その他
手元のPCをローカルまたはクライアント、アクセスされる側のPCをリモートまたはホストと呼ぶ。
以下の説明では、一貫して、それぞれローカルとリモートと言う呼び名を用いる。
SSH1にはセキュリティにレベルなどに問題があるらしく、
廃れつつあるらしいので、説明は主にプロトコル2にかんするもの。
OSはリナックスを想定。
以下、
・SSHの超基本。
・公開鍵を使う。
・公開鍵使用に伴う留意点。
・さらに便利に使う方法。
の順に説明をする。
参考:SSHの鍵管理
DSA認証の設定方法
OpenSSHと製品版SSH混在環境での公開鍵認証の設定について
ssh-agent - 公開鍵認証の鍵管理
その他
手元のPCをローカルまたはクライアント、アクセスされる側のPCをリモートまたはホストと呼ぶ。
以下の説明では、一貫して、それぞれローカルとリモートと言う呼び名を用いる。
SSH1にはセキュリティにレベルなどに問題があるらしく、
廃れつつあるらしいので、説明は主にプロトコル2にかんするもの。
OSはリナックスを想定。
・SSHの超基本。
Secure Shell の略でbashやzshの様な気分。
詳しくは知らないけれど、ftpやtelnetは危ないらしいので、
sshを使いましょうというのが世の流れらしい。
使い方は簡単。端末で、
% ssh リモートのユーザ名@リモートサーバのアドレス
こうするとリモートユーザのパスワードを聞かれるので、
正しいパスワードを入れればログイン成功。
初回のみ、SSHでアクセスするサーバに登録するかどうかみたいないことを聞かれるが、
普通にyesを入力する。
・公開鍵を使う。
パスワードは8文字以上に長くできないらしいので、
もっと長いパスを用いてセキュリティレベルを上げたいときや、
一つのアカウントに複数の人がアクセスしたり、
一時的にアクセス権限を与える必要があるときなどには、
公開鍵認証を用いるのが便利。
公開鍵認証は、アクセスしたい人がローカルで公開鍵と秘密鍵という
一対からなる鍵の組を生成して、公開鍵の方をリモートに置き、
SSHの認証時に登録された公開鍵に対応する秘密鍵を持っている場合のみ
アクセスを受け付けるというもの。
詳しい公開鍵暗号のシステムについては、他を参照。
方法は簡単。
% ssh-keygen -t dsa
とすると、ない場合は、ユーザのホームに.sshというディレクトリを作るか聞かれるのでEnter。
次に、パスフレーズというパスワードの代わりを聞かれるので、
適当に長いものを考えてEnterを押す。
入力中、端末に変化は生じないが、ちゃんと入力されているので注意。
確認のため、再度パスフレーズを聞かれるので、それを正しく入力するとKeyが生成される。
生成された鍵の対は~/.ssh内に、公開、秘密それぞれ、id_dsa.pub、id_dsaとして
保存されているので、公開鍵の方をリモートの~/.ssh/authorized_keysに登録すれば完了。
Key 公開鍵のファイル名1
Key 公開鍵のファイル名2
と書き込むだけ。上のようにすれば複数の公開鍵も登録できる。
公開鍵の名前を適当に変えておくと少しだけ幸せになれるかも。
既述の様にリモートへアクセスすると、今度はパスフレーズを聞かれるので入力。
正しい手続きを踏んでいれば、ログイン成功。
続いてパスワードを聞かれるときは、手続きなどに不備があったため
公開鍵認証には失敗している。
・公開鍵使用に伴う留意点。
公開鍵にはいくつかの形式があり、それが違う場合は、上のようにしても認証されない。
主なカテゴリは二つ。
・プロトコルのヴァージョンが1か2か。
・SSHが商用SSHかOpenSSHか。
つまり、全部で4つのカテゴリに分かれる。
どのカテゴリに属するかは公開鍵の登録ファイルか秘密鍵の名前で分かる。それぞれ、
OpenSSH1:~/.ssh/authorized_keys、~/.ssh/identity
商用SSH1 :~/.ssh/authorized_keys、~/.ssh/identity
OpenSSH2:~/.ssh/authorized_keys、~/.ssh/id_dsaまたは ~/.ssh/id_rsa
商用SSH2 :~/.ssh2/authorization、~/.ssh2/identification
プロトコル1では商用とOpenの間に互換性があるらしい。
OpenSSH2の秘密鍵には、暗号化の方法に応じてDSAのものとRSAの物がある。
ここでは、プロトコル2の場合のみに言及する。
前項で説明した公開鍵認証は、ローカル、リモート共にOpenSSH2を使っていて、
DSAで暗号化した場合に相当する。
問題はローカルとリモートで別のSSH、つまり一方は商用を他方はOpenを使っていた場合に生じる。
この二つには互換性がないため、そのままでは公開鍵が認証されない。
さらに、変換コマンドは存在するが、
どちらのSSHをどちらの計算機で使っているかに応じてコマンドが異なる。
ローカル>リモートとすると、それぞれ、
・OpenSSH2>商用SSH2
% ssh-keygen -e -f 変換前 > 変換後
・商用SSH2>OpenSSH2
% ssh-keygen -i -f 変換前 > 変換後
の様にして公開鍵を変換してから送る。
solarisを使っている場合はSun_SSHというSSHが使われていて、
こちらも鍵を変換する必要があるが、ここでは触れない。
・さらに便利に使う方法。
以上の方法を用いれば公開鍵を用いたアクセスが可能となる。
が、このままでは毎回長いパスフレーズの入力を要求される。
非常に長いパスフレーズを指定し、パスフレーズの入力なしでSSHを実行できれば、
より楽によりセキュアに通信することが出来る。
ssh-agentを用いると、一々パスフレーズを入力する必要がなくなる。
使い方は、
% ssh-agent $SHELL
% ssh-add
すると、パスフレーズを聞かれるので入力すれば、
シェルの終了までパスフレーズを入力する必要がなくなる。
ログイン時に起動してログアウト時に終了させるためには、bashの場合、
.bash_profile に
eval `ssh-agent`
と、.bash_logout に
eval `ssh-agent -k`
と既述する。
登録した鍵を確認するには、
% ssh-add -l
登録した鍵をすべて消去したいときには、
% ssh-add -D
とする。
物理的な接触に対しては無力なので、
席を立つときなどは、画面をロックするなど、十分に注意すること。
Secure Shell の略でbashやzshの様な気分。
詳しくは知らないけれど、ftpやtelnetは危ないらしいので、
sshを使いましょうというのが世の流れらしい。
使い方は簡単。端末で、
% ssh リモートのユーザ名@リモートサーバのアドレス
こうするとリモートユーザのパスワードを聞かれるので、
正しいパスワードを入れればログイン成功。
初回のみ、SSHでアクセスするサーバに登録するかどうかみたいないことを聞かれるが、
普通にyesを入力する。
・公開鍵を使う。
パスワードは8文字以上に長くできないらしいので、
もっと長いパスを用いてセキュリティレベルを上げたいときや、
一つのアカウントに複数の人がアクセスしたり、
一時的にアクセス権限を与える必要があるときなどには、
公開鍵認証を用いるのが便利。
公開鍵認証は、アクセスしたい人がローカルで公開鍵と秘密鍵という
一対からなる鍵の組を生成して、公開鍵の方をリモートに置き、
SSHの認証時に登録された公開鍵に対応する秘密鍵を持っている場合のみ
アクセスを受け付けるというもの。
詳しい公開鍵暗号のシステムについては、他を参照。
方法は簡単。
% ssh-keygen -t dsa
とすると、ない場合は、ユーザのホームに.sshというディレクトリを作るか聞かれるのでEnter。
次に、パスフレーズというパスワードの代わりを聞かれるので、
適当に長いものを考えてEnterを押す。
入力中、端末に変化は生じないが、ちゃんと入力されているので注意。
確認のため、再度パスフレーズを聞かれるので、それを正しく入力するとKeyが生成される。
生成された鍵の対は~/.ssh内に、公開、秘密それぞれ、id_dsa.pub、id_dsaとして
保存されているので、公開鍵の方をリモートの~/.ssh/authorized_keysに登録すれば完了。
Key 公開鍵のファイル名1
Key 公開鍵のファイル名2
と書き込むだけ。上のようにすれば複数の公開鍵も登録できる。
公開鍵の名前を適当に変えておくと少しだけ幸せになれるかも。
既述の様にリモートへアクセスすると、今度はパスフレーズを聞かれるので入力。
正しい手続きを踏んでいれば、ログイン成功。
続いてパスワードを聞かれるときは、手続きなどに不備があったため
公開鍵認証には失敗している。
・公開鍵使用に伴う留意点。
公開鍵にはいくつかの形式があり、それが違う場合は、上のようにしても認証されない。
主なカテゴリは二つ。
・プロトコルのヴァージョンが1か2か。
・SSHが商用SSHかOpenSSHか。
つまり、全部で4つのカテゴリに分かれる。
どのカテゴリに属するかは公開鍵の登録ファイルか秘密鍵の名前で分かる。それぞれ、
OpenSSH1:~/.ssh/authorized_keys、~/.ssh/identity
商用SSH1 :~/.ssh/authorized_keys、~/.ssh/identity
OpenSSH2:~/.ssh/authorized_keys、~/.ssh/id_dsaまたは ~/.ssh/id_rsa
商用SSH2 :~/.ssh2/authorization、~/.ssh2/identification
プロトコル1では商用とOpenの間に互換性があるらしい。
OpenSSH2の秘密鍵には、暗号化の方法に応じてDSAのものとRSAの物がある。
ここでは、プロトコル2の場合のみに言及する。
前項で説明した公開鍵認証は、ローカル、リモート共にOpenSSH2を使っていて、
DSAで暗号化した場合に相当する。
問題はローカルとリモートで別のSSH、つまり一方は商用を他方はOpenを使っていた場合に生じる。
この二つには互換性がないため、そのままでは公開鍵が認証されない。
さらに、変換コマンドは存在するが、
どちらのSSHをどちらの計算機で使っているかに応じてコマンドが異なる。
ローカル>リモートとすると、それぞれ、
・OpenSSH2>商用SSH2
% ssh-keygen -e -f 変換前 > 変換後
・商用SSH2>OpenSSH2
% ssh-keygen -i -f 変換前 > 変換後
の様にして公開鍵を変換してから送る。
solarisを使っている場合はSun_SSHというSSHが使われていて、
こちらも鍵を変換する必要があるが、ここでは触れない。
・さらに便利に使う方法。
以上の方法を用いれば公開鍵を用いたアクセスが可能となる。
が、このままでは毎回長いパスフレーズの入力を要求される。
非常に長いパスフレーズを指定し、パスフレーズの入力なしでSSHを実行できれば、
より楽によりセキュアに通信することが出来る。
ssh-agentを用いると、一々パスフレーズを入力する必要がなくなる。
使い方は、
% ssh-agent $SHELL
% ssh-add
すると、パスフレーズを聞かれるので入力すれば、
シェルの終了までパスフレーズを入力する必要がなくなる。
ログイン時に起動してログアウト時に終了させるためには、bashの場合、
.bash_profile に
eval `ssh-agent`
と、.bash_logout に
eval `ssh-agent -k`
と既述する。
登録した鍵を確認するには、
% ssh-add -l
登録した鍵をすべて消去したいときには、
% ssh-add -D
とする。
物理的な接触に対しては無力なので、
席を立つときなどは、画面をロックするなど、十分に注意すること。
PR
この記事にコメントする