2023年9月20日水曜日

Microsoft Azure - その6. sshログインの特殊ケース

前回でAzureのIaaSのサーバにホスト名でアクセスできるようにしたので、
sshでのログインの環境を整備していきます。
もちろんこれまででもIPアドレス直打ちでログインできていたわけで、
今後はsshで接続先をホスト名にしてもいいと言うだけなのですが、
実際に運用するとなると特集なケースもあるのです。

まずは企業内からプロキシサーバを経由するケース。
手元のネットワークが直接インターネットに接続できれば問題などないのですが、
大体の企業のネットワークはインターネットとは分断されていて
プロキシサーバを使って外部のウェブサイトにアクセスするようになっています。
で、このプロキシサーバがSquidなら話は簡単。
すでに正常動作していて認証なしで利用可能な
Linux上のSquidプロキシサーバなら、
サーバの設定ファイル"/etc/squid/squid.conf"の
acl SSL_ports
acl Safe_ports
がたくさん並んでいるあたりに
acl SSL_ports port 22
acl Safe_ports port 22
の2行を追加して
/etc/init.d/squid restart
で再起動すればセットアップ完了。
で、企業内ネット下のクライアントPCからのログイン手順ですが、
ここではWindowsにcygwinwをインストールしている環境を想定することにします。
まあLinuxでも似たようなものです。
と、その前に秘密鍵の権限について。
クライアントPC(Windows + Cygwin)におく"~/.ssh/<秘密鍵ファイル>"については
以下のように変更しておく必要があります。
$ cd ~/.ssh
$ chmod 600 <秘密鍵ファイル>
$ icacls <秘密鍵ファイル>
<秘密鍵ファイル> <ADドメイン名>\<ユーザ名>:(R,W,D,WDAC,WO)
                 <ADドメイン名>\Domain Users:(Rc,S,RA)
                 Everyone:(Rc,S,RA)
このケースでは"<ADドメイン名>\<ユーザ名>"ユーザだけが
アクセス権を持つべきなので
他の2ユーザ向けのアクセス権を以下のコマンドで削除します。
$ icacls <秘密鍵ファイル> /remove Users "<ADドメイン名>\Domain Users"
$ icacls <秘密鍵ファイル> /remove Users "Everyone"
この後はsshでログインする場合は以下を実行します。
$ cd ~
$ ssh -i .ssh/<秘密鍵ファイル> <ユーザ名>@<接続先ホスト名> -o Proxycommand="C:\cygwin64\bin\nc -X connect -x <プロキシサーバIPアドレス>:<プロキシサーバポート番号> %h %p"
またsftpでファイル転送する場合は以下を実行します。
$ cd ~
$ sftp -i .ssh/<秘密鍵ファイル> -o "Proxycommand C:\cygwin64\bin\nc -X connect -x <プロキシサーバIPアドレス>:<プロキシサーバポート番号> %h %p" <ユーザ名>@<接続先ホスト名>
原理的には"~/.ssh/config"にうまく記述すれば
これほど長いコマンドを毎回打つ必要がなくなるのですが、
いろいろやっても様々な問題が出てうまくいかないんですよね。
sshに関してはそれでもログインさえできてしまえば特に問題はないのですが、
sftpはログイン後にローカル側の目的のディレクトリまで
コマンドを打って移動する必要がありしんどい。
まあしかし、lpwd(ローカル側のカレントディレクトリの確認)、
lls(ローカル側のディレクトリの内容の表示)、
lcd(ローカル側のディレクトリの移動)コマンドあたりを駆使して
ローカルのディレクトリを移動するほかありません。

もしプロキシの設定を変えられないなら別の手があります。
実はAzureには各VMへのログインを中継する
踏み台サービス(PaaS)[Azure Bastion]が存在します。
セキュリティ等のためAzure内の仮想マシンに
グローバルIPアドレスを割り当てられないケースでは利用は必須です。
これを経由すればウェブブラウザから
Azure内部のVMにsshやRDPでログインできます。
つまりプロキシサーバ経由でもsshでログインできるということ。
ただしAzure Bastion(Standard SKU)は約40円/時間もするようで。
使った分だけの従量制課金とはいえちょっと高い。
ということで試すのさえあきらめました。
必要になったときに改めて検討することにします。

0 件のコメント:

コメントを投稿