この文書では、
- Windows 10 上で
- VM(VirtualBox等) や WSL を使用せず
- Cygwin を Visual Studio Code(以下、VSCode)上で操作し
- リモートの Ubuntu サーバや github.com に ssh 可能で
- Ansible の実行できる
ような環境を構築します。
環境構築後の最終的な操作可能な状態イメージは、以下の画像の通りです。 VSCode 上の Cygwin で ssh を実行したり、 ansible を実行しています。
Cygwin
まずは、Cygwinのセットアップを行います。
本体のダウンロード
Cygwin はこちらからダウンロードします。
ここでダウンロードする setup-x86_64.exe
は、アプリケーションをインストール後削除する一般的なものとはことなり、 Cygwin に再度パッケージを追加する場合に必要となりますので、保管しておきましょう。
パッケージの追加
インストールのガイダンスは、皆さんの環境に合わせてセッティングをしてください。以降の解説は、インストール先をデフォルトの C:\cygwin64
にインストールしたものとして進めます。
パッケージをインストールするためには、 Cygwin Setup - Select Packages 画面で操作を行う必要があります。
View を Full に変更して、 Search に対象のパッケージ名を入力し、 New カラムからインストールするバージョンを指定します。必要に応じて vim
や wget
などもインストールしておくといいでしょう。
- ansible
- git
- openssh
VS Code のセットアップ
VS Code 上では、ターミナルの設定と、 github.com にプッシュする上で問題となるファイル末尾の改行設定を行います。 また、 VS Code を使用する上での Cygwin 特有の補足がありますので、紹介します。
ターミナル
VS Code のターミナルとして Cygwin を使用するように設定を行います。
VS code ターミナル
タブから +
の隣の v
の部分をクリックし、 既定のプロファイルの選択
を選択します。
プロンプトが表示されるので、検出済みの Cygwin を選択します。
設定後、 Cygwin をターミナルとして選択できるようになります。
ファイル末尾に改行を挿入する設定
VS Code 上で操作を行う場合、デフォルトではファイル末尾に New Line が挿入されません。言葉で説明するとわかりづらいですが、いわゆる github.com 上のコードの末尾に 🚫 が出るやつです。
Ctrl+,(カンマ)
を入力して設定を呼び出し、設定の検索
に files.insert
と入力した辺りで対象の設定が表示されます ので、チェックをしましょう。
補足: フォルダーを開く
を実行する場合
Windows 上の Cygwin のインストールフォルダ C:\cygwin64
の配下が Cygwin 上のルート /
となります。つまり、 C:\cygwin64\usr\local
が、 Cygwin 上の /usr/local
にあたります。
そのため、例えば、VS Code で Cygwin のホームディレクトリを開く場合は、 ファイル > フォルダーを開く
から C:\cygwin64\home\<Windows上のユーザネーム>
を指定します。
Cygwin の設定
ssh の設定は、cygwin 上で鍵を生成して登録する方法と、現在 Windows 上で使用している鍵を使いまわしたり、コピーする方法が考えられますので、それぞれ解説します。
その後、ターミナル上では Cygwin 特有のプロンプトの設定がなされているため、補足として、他の代表的な環境と合わせるための変更方法を記載しています。
ssh(新規に鍵を生成する場合)
Cygwin 上には openssh がインストールされているので、 ssh-keygen
が使用できます。例えば、以下のようなコマンドで鍵を生成します。
ssh-keygen.exe -t ecdsa -b 521 -C "cygwin"
生成した公開鍵を ansible を実行する対象のリモートサーバ内の authorized_keys に追加します。例えば、以下のようなコマンドで鍵を追加することが出来ます。
ssh-copy-id -i .ssh/*.pub user@hostname
また、github.comにも公開鍵を登録します。 以下のコマンドを実行して鍵をクリップボードにコピーした後、 SSH keys / Add new から公開鍵を追加しましょう。
cat .ssh/id_*.pub | clip
ssh(Windows で使用しているssh設定を共有する場合)
VS Code の Remote SSH を使用するなどで、 Windows 上で ssh のセッティングを行っている場合、それらを使いまわしたいことがあると思います。
Cygwin 上では "${HOMEPATH}/.ssh/"
にアクセスすることで、Windows 上のユーザの .ssh
の情報を取得することができます。
現在の Windows ユーザの .ssh
を共有する場合は、以下のようにシンボリックリンクを作成すれば、 Windows 上のユーザの .ssh
ディレクトリを Cygwin 上のホームディレクトリの .ssh
として利用することが可能です。
ln -s "${HOMEPATH}/.ssh" ~/.ssh
ssh(Windows で使用しているssh設定をコピーする場合)
.ssh
を共有はしないまでも、現在の Windows の ssh 設定をコピーしたい場合もあると思います。その場合は、以下のように実行すると良いでしょう。
cp -r "${HOMEPATH}/.ssh" ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/*
ssh の接続確認
以上のいずれかの設定を行うことで、接続が可能になります。例えば、 github.com
に接続してみましょう。
ssh -T git@github.com ## 成功すれば、以下のような内容が出力される Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
補足: プロンプト PS1 の変更
Cygwin インストール直後では、/etc/bash.bashrc
に、以下のような PS1
が設定されています。
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
この出力を変更したい場合は、 ~/.bashrc
に以下のように記述すると良いでしょう。
## Ubuntu っぽく PS1='\u@\h:\w\$ ' ## RHEL っぽく PS1='\u@\h \W\\$ '
以上で、環境構築は完了となります。お疲れさまでした。
参考文献
- Cygwinのインストールとapt-cygのインストール - Qiita
- cygwinをansibleのコントローラにする: シニアSE"とたろう"の ゆる工作
- テキストファイルをgrepしたらBinary file (standard input) matchesとなった時の対応方法 - Qiita
- Integrated Terminal in Visual Studio Code
- ansible.cnfでssh_configを設定する | DevelopersIO
- How to change the default shell prompt. - Red Hat Customer Portal
- 2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方 - Qiita
- 公開鍵をリモートホストに簡単に登録できるコマンドssh-copy-idを使ってみる|misc|@OMAKASE
(順不同)