S-JIS[2010-02-18/2010-03-28] 変更履歴

Cygwinのssh

ソフト Select Packages コマンド名
OpenSSH Net openssh /usr/bin/ssh

インストール後の設定

TakaoさんのCygwinを利用してWindowsにHBaseをインストールのSSH設定をほぼそのまま実行させていただきました。

  作業内容 実施コマンド
1 パスワードファイル等の権限を設定する。
chmod +r,u+w /etc/passwd
chmod +r,u+w /etc/group
chmod 755 /var
2 sshdの設定ファイルを作成する。
ssh-host-config -y
*** Info: Generating /etc/ssh_host_key
*** Info: Generating /etc/ssh_host_rsa_key
*** Info: Generating /etc/ssh_host_dsa_key
*** Info: Creating default /etc/ssh_config file
*** Info: Creating default /etc/sshd_config file
*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.
*** Info: However, this requires a non-privileged account called 'sshd'.
*** Info: For more info on privilege separation read /usr/share/doc/openssh/README.privsep.
*** Query: Should privilege separation be used? (yes/no) yes
*** Info: Note that creating a new user requires that the current account have
*** Info: Administrator privileges. Should this script attempt to create a
*** Query: new local account 'sshd'? (yes/no) yes
*** Info: Updating /etc/sshd_config file
*** Info: Added ssh to C:\WINDOWS\system32\driversc\services


*** Warning: The following functions require administrator privileges!

*** Query: Do you want to install sshd as a service?
*** Query: (Say "no" if it is already installed as a service) (yes/no) yes
*** Query: Enter the value of CYGWIN for the daemon: []

*** Info: The sshd service has been installed under the LocalSystem
*** Info: account (also known as SYSTEM). To start the service now, call
*** Info: `net start sshd' or `cygrunsrv -S sshd'. Otherwise, it
*** Info: will start automatically after the next reboot.

*** Info: Host configuration finished. Have fun!
3 WindowsのアカウントをCygwinに同期する。
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group

sshサービス(sshデーモン)の起動・停止方法

  作業内容 実施コマンド(Cygwin(bash)) コマンドプロンプトの場合
1 sshサービスを起動する。
cygrunsrv -S sshd
net start sshd
CYGWIN sshd サービスを開始します.
CYGWIN sshd サービスは正常に開始されました。
2 サービス状態の確認方法
実行中はStateがRunning
停止中はStopping
cygrunsrv -Q sshd
Service            : sshd
Display name       : CYGWIN sshd
Current State      : Running
Controls Accepted  : Stop
Command            : /usr/sbin/sshd -D
sc query sshd
SERVICE_NAME: sshd
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
3 sshサービスを停止する。
cygrunsrv -E sshd
net stop sshd
CYGWIN sshd サービスを停止中です.
CYGWIN sshd サービスは正常に停止されました。

ログイン・ログアウト方法

  作業内容 実施コマンド
1 sshにログインする。
ssh 127.0.0.1
hishidama@127.0.0.1's password:
Last login: Thu Feb 18 21:15:12 2010 from localhost
2 sshからログアウトする。
(Cygwin(bash)のコンソールに戻る)
exit
logout
Connection to 127.0.0.1 closed.

sshサービス(sshd)が起動されていないと、ログインが失敗する。
ssh: connect to host 127.0.0.1 port 22: Connection refused


パスワードを毎回入力せずにログインできるようにする設定

  実施コマンド 備考
1
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
Generating public/private dsa key pair.
Your identification has been saved in /home/hishidama/.ssh/id_dsa.
Your public key has been saved in /home/hishidama/.ssh/id_dsa.pub.
The key fingerprint is:
e7:7a:e7:7a:9a:c5:43:2c:16:50:92:e9:89:37:e0:d7 hishidama@host
The key's randomart image is:
+--[ DSA 1024]----+
 
2
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
 
3
chmod 600 ~/.ssh/authorized_keys
 
 
ssh 127.0.0.1
Last login: Thu Feb 18 21:15:12 2010 from localhost
sshにログインしても
パスワード入力を求められなくなる。

~/.sshの下のid_dsaとid_dsa.pubとauthorized_keysを削除すると、ログイン時にパスワード入力が要求されるようになる。


環境変数の設定方法

Cygwinのssh経由の環境では、定義される環境変数は通常のbashのログイン時より少ない。[2010-03-28]
基本的にはWindowsのシステム環境変数の一部が定義されるだけのようだ。
例えば環境変数TMP・TEMPPATHは、システム環境変数の値が有効になっており、ユーザー環境変数で指定されている値ではない。

環境変数の確認方法:

$ ssh localhost echo '$TEMP'
/cygdrive/c/WINDOWS/TEMP

$ echo $TEMP
/cygdrive/c/DOCUME~1/hishidama/LOCALS~1/Temp

ssh用の環境変数を指定するには、以下のような設定を行う。

内容 実施コマンド 編集例 備考
環境変数使用を有効にする。
vi /etc/sshd_config
#PermitUserEnvironment no
PermitUserEnvironment yes
PermitUserEnvironmentを「yes」にする。
デフォルトは「no」
環境変数を定義する。
vi ~/.ssh/environment
PATH=/bin
MYENV=zzz:$PATH
最初、environmentというファイルは存在していない。
「$」による環境変数の展開は行われない。
左記の例では、「$PATH」という文字がそのまま残る。
sshdを再起動する。
cygrunsrv -E sshd
cygrunsrv -S sshd
  sshd_configを反映させるには再起動が必要だが、
environmentはsshによるログイン時に読み込まれるので
再起動は不要。
環境変数の内容を確認する。
$ ssh localhost echo '$PATH'
/bin

$ ssh localhost echo '$MYENV'
zzz:$PATH
   

参考: taiyoさんのssh-env - ssh実行時に環境変数を設定/変更したい


Cygwinへ戻る / 技術メモへ戻る
メールの送信先:ひしだま