最終目的はc#で作成したプログラムで自動でサーバーのコマンド起動を行うものです。
例えばWindowsで実行中のプログラムが20分かけてlinuxサーバにデータをsambaに格納。
その後、ssh でサーバーにログインしてそのサーバーのシュミレーションプログラムがsambaで格納されたデータを使用する。起動をサーバーのログインした後のプロンプトからコマンドを入力する。帰宅したいがサーバで起動させるまでは20分待たないとならない。
windowsのbatでこれを行えればいいのだが、sshの接続とサーバーでのコマンド実行まではできない。あれこれと検索しまくり。完成させました。以下はその過程のメモ書きです。
追記(2019-04-15(mon))ラズベリパイからだとsshはパスワード付きでログインだった。当たり前だがc#でパスワードでというのはsshライブラリがパスワード付きでビルドされたから公開鍵が利用されないとしてるからだろう(推測)と思う。
$cat ~/..sh/Known
例えば、windowsからとmacからサクラサーバーにssh接続したいとする。
まずはWindows10から。
公開キーはWindowsで鍵を作成する。これをサクラの~/.ssh下にコピーする。
scpなどの例があったがうまく行かなかったのでFileZilaで以下からアップする。
PS C:\Users\m_kur\.ssh>
この中には生成された、id_rsaとid_rsa.pubがある。
公開鍵であるpubをアップして名前をauthorized_keysに変更し属性を600にする。
パスワード要求なしでうまく行った。
サクラスタンダードへSSHでログイン
サクラ~/.ssh/config
ここで疑問。公開鍵はWindowsで作成した。これをmacにコピーすればマックからのsshでもパスワードなしでログインできる。ここで考える。
サーバー側にある公開鍵は1つでいいか?Windows側でなくmacで作成したものはmacとの接続で使用すればいいだけだろ・・・。authorized_keysがひとつでない必要があるけど。ここがまだわからない。それとconfigがうまく設定できていないようで思ったようにならない。
もしかしてこのconfigってのはhostsみたいなものでクライアントに設置するもの?
$ cat config
Host hoge
HostName kuroyan.sakura.ne.jp
User kuroyan
クライアント側に入れたら反映された。
c>ssh hoge でパスワードなしでログインできた。
— ここでmacが割り込む
これだけのファイルがここにはあった。確かgithubの rsa でやれるというのがあった。つまりなんでもいいということだ。しかしguthub_rsa.pubをサーバーのauth..に追加したがパスワードなしはできなかった。
Users/m_kurosaki/.ssh
Mac-mini:.ssh m_kurosaki$ ls
github_rsa github_rsa_bak-github
github_rsa.pub known_hosts
github_rsa.pub_bak-github
それとクライアントのknown_hostってなんだ。もはやいつ入れたかわからない鍵が入っている。調べるとこれはOpenSSHで使用される接続先情報だ。
macのknown_host内容をすべて削除してmacのFileZillaでlgs.jpで接続。鍵が作成されますと表示が(多分)出て追加されたのが分かる。
Mac-mini:.ssh m_kurosaki$ cat known_hosts
lgs.jp,163.43.80.92 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPqGkZwTn9zXKswKGp/WNvXs6ioqQBYozxTl5Caxxxxxxxxxxxxxxxxxxxx
これはFileZillaがパスワードを渡しているからやり取りするためのセキュアな対応で暗号化で使う鍵ということだ。
macでやってみる。
Mac-mini:.ssh m_kurosaki$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/m_kurosaki/.ssh/id_rsa): kurosaki96
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in kurosaki96.
Your public key has been saved in kurosaki96.pub.
The key fingerprint is:
SHA256:HUdOhBwWc/sJCG3QxxxxxxubJZVQ m_kurosaki@Mac-mini.local
The key’s randomart image is:
+—[RSA 2048]—-+
| o==== ..E|
| o*B..oo |
| .o.*o+*.|
| . o+*O+=|
| S …Oo*+|
| oo.B. |
| ..o+. |
| .. |
| |
+—-[SHA256]—–+
Mac-mini:.ssh m_kurosaki$
Mac-mini:.ssh m_kurosaki$ ls
github_rsa known_hosts
github_rsa.pub kurosaki96
github_rsa.pub_bak-github kurosaki96.pub
github_rsa_bak-github
Mac-mini:.ssh m_kurosaki$
なんとバズワードいれたらその名前になってる。
バズワードは公開鍵方式でもバズワードをパスワードのように使用する(なんか言葉似てて分かりづらい)
バズワードなしでやったら id_rsaとid_rsa.pub ができている。
これをサーバーに追加する。
filezillaで送って・・・パスワード付きログインして
[kuroyan@ww123 ~/.ssh]$ cat id_rsa.pub >> authorized_keys
接続してみる
Mac-mini:.ssh m_kurosaki$ ssh kuroyan@lgs.jp
Last login: Sun Apr 14 18:22:46 2019 from kd1112xxxxxx0.au-net.ne.jp
FreeBSD 11.2-RELEASE-p8 (GENERIC) #0: Tue Jan 8 21:35:12 UTC 2019
Welcome to FreeBSD!
[kuroyan@www3782 ~]$おめでとう!!
macでも同じに config を作成できる
Mac-mini:.ssh m_kurosaki$ vi config
Mac-mini:.ssh m_kurosaki$ ssh hoge
The authenticity of host ‘kuroyan.sakura.ne.jp (163.43.80.92)’ can’t be established.
ECDSA key fingerprint is SHA256:hD73VLgeBWo/yLLI/DUrBPuphBN2ur8X2yNny98JaCg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘kuroyan.sakura.ne.jp’ (ECDSA) to the list of known hosts.
Last login: Sun Apr 14 18:29:54 2019 from kd111239183220.au-net.ne.jp
FreeBSD 11.2-RELEASE-p8 (GENERIC) #0: Tue Jan 8 21:35:12 UTC 2019
Welcome to FreeBSD!
[kuroyan@www3782 ~]$ cd ~/.shhmcで見るとIPでない同じさくらサーバーで、ecdsaが生成されている。内容は同じだ。
Mac-mini:.ssh m_kurosaki$ cat known_hosts
lgs.jp,163.43.80.92 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPqGkZwTn9zXKswKGp/WNvXs6ioqQBYozxTl5CasqIOBxxxxxxxxxxxxxxxx
kuroyan.sakura.ne.jp ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPqGkZwTn9zXKswKGp/WNvXs6ioqQBYozxTl5CasqIOBxxxxxxxxxxxxxxxx
Mac-mini:.ssh m_kurosaki$
Windows
c>cat ~/..ssh/known_hosts
makejapan.jp,133.242.xxx.xxx ssh-rsa(これも入っている) AAAAB3NzaC1yc2EAAAABIwAAAQEAxPz4r62ks6dkLwqa4bQiDOiN+hRc3AyoC/wIVsBaSiZu
・
以下はkuroyan@lgs.jpでもkuroyan@kuroyan.sakura.ne.jpでもパスワードなしで行ける。よく見ると生成された公開キーは同じだ。ドメイン名が有効だからということ・・・。
lgs.jp,163.xx.xx.xx ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmxxxxxxxxxxxx
kuroyan.sakura.ne.jp ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYxxxxxxxxxxxxxxxxxxxx
一方サーバーを見ると
[kuroyan@www3782 ~/.ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDV+FN7dGQ+XCDjqUhLP5OQSsWYYKYyL5TK3OjS54tUt0d9HbifRbY38n3fwxxxxxxxx
ここはクライアントで生成したid_rsa.pubだ。先での接続はknow_hostとは関係しないのか。そういえばsshで新たな接続の時に画面に生成されますとでるときあるがあれがsshパスワード付きで使用されるやつということか・・・。