sshでのパスワードとバズワード。紛らわしい。
パスワードはログイン時にサーバに送り、サーバ側でユーザのパスワードと一致するかどうかを検証するもの。
パスフレーズはSSHの秘密鍵の入ったファイルを暗号化する場合にその暗号化をとくためのもの。
秘密鍵と公開鍵って、どっちをリモートホスト側(sshで接続される側)に置いて、どっちをクライアント側(sshコマンドを打って接続をお願いする側)に置くか、こんがらがりませんか?私は、google検索で、鍵ペアをリモートホスト側で作るやり方とクライアント側で作るやり方、両方見つけてしまって余計こんがらがりました。そこで先輩に、鍵はどっちで作ってどうやって鍵認証設定するのか、聞いてみた。
■基本的なやり方
多くの場合、サーバーを立てて、個人PCからそのサーバーにsshするというものが多い。この場合、以下のように定義できる。
◎サーバー→リモートホスト(sshで接続される側)
◎個人PC →クライアント(sshコマンドを打って接続しに行く側)
*鍵の作り方と鍵認証設定の仕方(概要)*
(1)個人PCで鍵ペアを作る
(2)個人PCで作った鍵ペアから、公開鍵をサーバー(リモートホスト)に持って行く
(3)サーバーに持ってきた公開鍵を設定する
(4)サーバーのsshd_configを書き換える
この逆、つまり、サーバー側(sshで接続される側)で鍵ペアを作って、各個人PCに秘密鍵を配るやり方もあるそうな。ただし、sshで接続される側で鍵ペアを作って、秘密鍵を配布するやり方は、以下の場合に取るべき方法だそう。
*sshで接続される側で鍵ペアを作って、秘密鍵を配布するやり方を取る場合*
クライアント側(ssh接続をしに行く側)がたくさんいて、各人から公開鍵を回収するのが大変な場合。例えば、ある開発環境(sshで接続される側)に大人数が鍵認証で接続する場合。こういうときは、鍵が全員分集まるのに時間がかかるので、サーバー側(sshで接続される側)で鍵ペアを人数分作っちゃって、配布しちゃうそうな。
*注意事項*
◎作成する鍵ペアは、必ずパスワードを付けておく。
◎パスワードと秘密鍵は別ルート(別々のメール等)で送る。
臨機応変にしないといけないのね。
●確認方法
ssh は -v オプションでデバッグログを出力できます。
Windows10からのアクセス。現在はOpensshがインストールされている。現段階だと既定になていた。
$ssh root@url
password: xxxxxxx
※Windows7で行うと改行コードが違うのか、表示がおかしい。プロンプトが2回表示される。
[abcd$][abcd$] <–こんな感じ
win7であってもteratermもRLoginも問題ない。
今回パスワードとRSAキーも考慮してBATで接続させ接続先のスクリプトを起動させるところまでを考えてみた。キーはログインする側とされる側で同じものが生成されていた(この段階だと勘違いだった。パスワード要求での公開鍵であり、これはRSAとは違う)。
●SSHのセキュア情報場所
(1)ログインされる側:~/.ssh/known_hostsにある
この場所はroot権限でのみ存在するようだ。blog@url で入れても表示されない。suでrootに入って見ることができた。(これも違うようだ。ログインするユーザーで作成するというのが正解。rootでsshは危ないから)
(2)Winows側: C:\Users\m_kur\.ssh>type known_hosts
makexxx.co.jp,133.242.155.xxx ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxPz4r62ks6dkLwqa4bQiDOiN+hRc3AyoC/wIVsBaSiZuXtktMz57epzrY2pJ+0Ij7FLjk72JGU68XJUiUqCp0sqdOqoBODLLZqV58DrKtoTOT
・
・
さてここで疑問が
このファイルの参照をさせるだろうけど「known_host」ファイルを直接参照させている例が見当たらない。
[割り込み記事」そうそう忘れていた。ラズパイ以下で接続できた。
公開鍵だけは自分のPCに生成されるている?
>ssh pi@192.168.179.6
password:raspberry
●製作中
以下Excelを終了させるまで待ってくれる(動作確認済み)
sshはパスワードを無視がうまく行かないのとscpが撥ねられる。
動作環境がLinuxとWindowsで違う用だ。例がそのまま動作しないので注意が必要!
import subprocess #import pexpect import pexpect.popen_spawn as psp import paramiko import scp #from pexpect import pxssh #subprocess.Popen(r'"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"') subprocess.run(r'"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"') SERVER = "192.168.179.6" USER = "pi" PASSWORD = "raspberry" if __name__ == "__main__": foo = psp.PopenSpawn('ssh %s@%s' % (USER, SERVER)) foo.expect('.*') scp.sendline(PASSWORD) foo.interact()No tags for this post.