デフォルトのWindowsコマンドシェル以外の別のシェルを初期化するようにWindows7で OpenSSH を構成する方法はありますか?
me@linuxhost:~
$ ssh me@windowshost
me@windowshost's password:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
me@windowshost C:\Users\me> exit
Connection to windowshost closed.
me@linuxhost:~
$
または、CygwinをインストールしてOpenSSHを追加のNetパッケージに含めると、デフォルトのCygwinシェルが作成されるため、同じ質問があります。インストール後にOpenSSHによって初期化されたシェルを構成する方法はありますか?
編集:
Cygwinの使用を提案してくれた@simlevに感謝します。私の問題をより明確に表すために、質問を言い換えました。
私の温かいお勧めは、Windowsマシンでssh接続を受け入れるために Cygwin を使用することです。これにより、リモートシステムからssh経由でBashシェルとコマンドラインgitにログインしたり、そこからscpしたりすることができます。
user@linuxhost$ ssh 192.168.x.x
Last login: Sun Feb 12 08:20:07 2017 from 10.x.x.x
user@windowshost$ echo $0 && git --version
-bash
git version 2.8.3
シェルはもちろんカスタマイズできます。ash、bash、dash、shがデフォルトで含まれていますが、Cygwinインストーラーを実行するだけで、zsh、mksh、tcsh、またはposhのいずれかを追加できます。次に、次の行を/etc/nsswitch.conf
に追加します。
db_Shell: /bin/sh
おそらく、/usr/bin/sh
を優先シェルへのパスに置き換えます。設定を有効にするには、すべてのCygwinプロセス(ターミナルウィンドウとsshdサービス)を再起動する必要があります。
ログイン時にcmdまたはpowershellプロンプトを取得する方法もあります。これは最近 Stackoverflow で見つけました。
winpty.exe
、winpty.dll
、およびwinpty-agent.exe
を/bin
に抽出します。 Cygwinターミナルの外部からこれを行う場合は、Cygwinインストールフォルダーのbin
サブディレクトリを探します。/bin
に2つのバッチファイルを作成し、それらに実行権限があることを確認します。それらにwinpty-cmd.batおよびwinpty-powershell.batという名前を付けて、次の内容を入力します。もちろん、<cygwin path>
は、Cygwinをインストールしたパスのプレースホルダーです(デフォルトではC:\cygwin
)。 :
@ECHO OFF
<cygwin path>\bin\winpty.exe cmd
そして
@ECHO OFF
<cygwin path>\bin\winpty.exe powershell
これらの行の1つを/etc/nsswitch.conf
に入れます。
db_Shell: /bin/winpty-cmd.bat
または
db_Shell: /bin/winpty-powershell.bat
タイトルが「書き直され」、私の投稿が少しずれているように見えるかもしれないので、元の質問に直接答えさせてください。
Cygwinを使用してWindowsマシンでssh接続を受け入れることに加えて:
1.
に従ってください。これらの内容を含む<cygwin path>\bin\winpty-gitbash.bat
というファイルを作成します。ここで、<cygwin path>
は、git-for-windowsをインストールしたパスのプレースホルダーです(デフォルトではC:\Program Files\Git
)。
@ECHO OFF
SET PATH="/bin"
<cygwin path>\bin\winpty.exe "<git path>\bin\bash.exe"
この行を/etc/nsswitch.conf
に入れます:
db_Shell: /bin/winpty-gitbash.bat
更新-2018年9月:
状況が変わり、 Win32-OpenSSH で、レジストリキーにパスを設定することで、デフォルトのシェル(実際には任意のシェル)を選択できるようになりました。 Brethlosze の最近の answer を参照してください。
this によると、WindowsのOpenSSHのDefaultShellを、PowerShellまたはその他の実行可能ファイルとして構成できます。
文字列値としてShellExecutableのパスを使用して、文字列レジストリキーComputer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell
を追加する必要があります。
Powershell:C:\ Windows\System32\WindowsPowerShell\v1.0\powershell.exe
CygWin Bash:C:\ Cygwin64\bin\bash.exe
私はそれをテストし、期待どおりに動作します。
Win32-OpenSSH wikiから:
サーバー側で、Windowsレジストリでデフォルトのsshシェルを構成します。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell
-シェル実行可能ファイルのフルパスComputer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShellCommandOption
(オプション)-構成済みのデフォルトシェルがコマンドを実行し、すぐに終了して呼び出しプロセスに戻るために必要なスイッチ。デフォルトでは、これは-c
です。Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShellEscapeArguments
(オプション)-デフォルトのシェルの引数のエスケープをスキップできるようにするフラグ。デフォルトでは、これは0
です。このオプションは、powershell、powershell、bash、cygwin、cmd、およびssh-shellhost.exe以外のシェルにのみ適用できます。
FWIW、OpenSSHのCygwinポートのパッケージをまとめました。これには、使いやすいインストーラーと、PDFおよびCHM形式の詳細なドキュメントが含まれています。Githubにあります:
https://github.com/Bill-Stewart/CygSSH
Cygwin v3を使用するため、専用のサービスアカウントは必要ありません(サービスはSYSTEM
として実行されます)。
私の意図は、Windowsマシンにインストールして使用するのに(比較的)便利なCygwinとrsyncの便利なパッケージを構築することでした。そのため、Windows中心のデフォルトと機能がいくつかあります。
SSH Users
ローカルグループを作成し、デフォルトでsshd_config
に設定します。ネストされたグループがサポートされています(たとえば、GPOを介してメンバーシップを管理する場合)rsync
が含まれますVista/Server2008以降およびWindowsPowerShell2.0以降が必要です。