Fabric 2 で接続周りをシンプルにしたい

Fabric 2 で env を fabric みたいに何も考えずに設定して接続というのをやろうとしてたんだけど下記のように出来なさそう。
global は、バッドノウハウな匂いしかしないんだけど、他にやる方法ないのかな。
おとなしく .ssh/config を設定してそれを読み込ませるようにするのがベターなのかしら?


# -- coding:utf-8 --
from fabric import Connection
from invoke import task

env = {}
conn = None

@task
def env_vagrant(c):
global conn
env['host'] = 'localhost'
env['user'] = 'vagrant'
env['kwargs'] = {
'key_filename': '/home/vagrant/.ssh/id_rsa',
}
conn = Connection(
env['host'],
user=env['user'],
connect_kwargs=env['kwargs'])

@task
def info(c):
conn.run('pwd')
conn.run('python --version')
conn.run('pipenv --version')
conn.local('ls')

OpenSUSE on Windows 10 へのSSH接続

WSLでLinux使えるようにしたい

Microsoft Store からインストールが出来、手軽に使えるようになった気がするのでLinux環境を構築したい。

仕事でCentOSを使っているのでyumを採用しているディストリビューション使いたかったけど、まだ公開されていないのでOpenSUSEをインストールしてみた。OpenSUSEは使うのも初めて。

とにかく何も入ってない

かなりピュアに近い状態のOSなので、ことある毎に”インストールされてない”みたいなエラーメッセージが出てくる。

必要な物がリストになっているならいいけど、そうでないならコマンド叩く毎に毎回インストールを繰り返すことになる。

ひとまずsshで接続

とりあえずWindows から sshで接続出来るところまでを今回はやってみます。

$ zipper install openssh

OpenSSH を入れただけだと各種ホストキーが存在しないのでこれを生成。

$ ssh-keygen -A

次にアカウントのssh 接続用鍵をWindowsでしたいところだけど、環境によって発行できないのでOpenSUSE上で生成して、id_rsaの中身を表示する。

$ cd ~/.ssh
$ ssh-kegen -t rsa
$ cat ~/.ssh/id_rsa
$ cat id_rsa.pub >> authorized_keys

pubファイルはauthorized_keysへの登録を忘れずに。

中身をコピーしたら、ローカルの適当な場所に鍵ファイルとして保存。

ちなみにOpenSUSE上からWindowsのファイルへアクセスするには
/mnt/c/ でCドライブへアクセスできる。あとはファイルをコピーなりなんなりすることも可能。

接続時の設定は下記の感じで行けるはず。

Host opensuse
User ユーザー名
Port 22
HostName 127.0.0.1
identityFile .ssh/id_rsa

各種設定は、環境に合わせて変更よろしく。

これでひとまずOpenSUSEへの ssh アクセスが可能になるはずです。