Windows 7にCygwinとsshdをインストールしましたが、それを機能させることができません。
私は http://www.noah.org/ssh/cygwin-sshd.html からのガイドに従いましたが、それでも取得します:
$ cygrunsrv -S sshd
cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062:
The service has not been started.
構成の詳細:
netstat -a -b
は、ポート22で何も実行していないことを報告しますC:\cygwin\var\log\sshd.log
は空ですssh-Host-config -y
更新:WindowsログはPossible duplicate cygwin1.dll
おかげで、あなたの更新は解決でした-他の誰かのために、Cygwin起動時のWin32エラー1062に対するレシピ#3があります:
1)アプリケーションイベントログを確認し、「sshd:PID:重複する可能性のあるcygwin1.dll:」のような「情報」レベルのイベントがあるかどうかを確認します。
指定された場所で愚かな複製を見つけ、名前を変更するか、どういうわけかパスから削除します。鉱山は「/ cygdrive/c/Program Files(x86)/socat-1.7.2.0/cygwin1.dll」にありました。
ブー、ソキャット!どうやら彼らは PP に従事しています。私のシステムにsocatがあることさえ知りませんでした。明らかに他のインストールの一部として来たようです。 cygwinメーリングリストで他の2人が重複DLLの問題に苦しんでいるのを発見しました。
ありがとう@HopelessN00b
、@user155148
、@Algomorph
ソリューションの組み合わせでうまくいきました。
私には2つの問題がありました。
cygwin1.dll
ファイルが重複しています。/var/log/sshd.log
:「特権分離ユーザーsshdが存在しません」流血の重複ピクルスファイルを処理します。
cd /cygdrive/c/Program\ Files\ \(x86\)/cwRsync/bin
mv cygwin1.dll cygwin1_.dll
/etc/passwd
を編集してユーザーを追加し、次の行を追加しました:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ユーザー名「sshd」は/var/log/sshd.log
から取得したものです。
GADこれはお尻の痛みなんです!
他のリソースを1つ見つけました。これはもう少し詳細で、Oracle
一言で言えば、あなたがグライフを持っているなら:
cygrunsrv -S sshd
/var/log/sshd.log
をご覧ください/etc/passwd
問題はありますか?権限分離の問題がありました。この場合、/etc/passwd
ファイルに行を追加することで問題は解決しました。
sshd:x:74:74:特権で区切られたSSH:/ var/empty/sshd:/ sbin/nologin
(ほぼ)同じ効果と類似の解決策がありました:アプリケーションログに重複したファイルが表示されました
重複する可能性のあるcygwin1.dll:/cygdrive/c/dakota/bin/cygwin1.dll ..
私のダコタのインストールから。このdllの名前を変更するとうまくいきました。ありがとうございました!
私にとっては、互換性の問題であることが判明しました。 Win7で実行しようとしました。エクスプローラーでファイルを右クリックして修正し、Windows Server 2003との互換性と互換性を設定しました。その後は問題なく動作しました。
ここで解決策を見つけました:
私の問題は、Cygwinの軽量バージョンを使用するOpenSSHサーバーを起動しようとすることに特に関連していたことに注意してください。
ローカルアカウントcyg_serverを使用してsshdを実行しています。エラーメッセージで所有者はrootである必要があると示されているにもかかわらず、/ var/emptyの権限を700に、所有者をcyg_serverに設定する必要がありました。
その日のメッセージ(/ etc/motd)も削除しましたが、これは絶対に必要だとは思いません。それは時々私の自動化の邪魔になります。
FWIW、cyg_serverは管理者権限を持つ完全にローカルなユーザーであり、Active Directory定義はありません。レジストリと/ etc/passwdにリストされています。
また、最近のCygwin更新を受け入れた後、cyg_serverの権限を編集する必要がありました。
cygrunsrv -E sshd
editrights -a SeAssignPrimaryTokenPrivilege -u cyg_server
editrights -a SeCreateTokenPrivilege -u cyg_server
editrights -a SeTcbPrivilege -u cyg_server
editrights -a SeServiceLogonRight -u cyg_server
cygrunsrv -S sshd
sshdを停止し、サービスアカウントの権限を変更して、sshdを再起動しました。
これは、このクイックセッションの後に権限が設定される方法です。
bash-4.4$ editrights -u cyg_server -l
SeAssignPrimaryTokenPrivilege
SeCreateTokenPrivilege
SeTcbPrivilege
SeServiceLogonRight
SeDenyRemoteInteractiveLogonRight
bash-4.4$
誰かが別のStack Exchange質問にこれを投稿しましたが、/var/log/sshd
に空のファイルがある場合は、/usr/sbin/sshd
を試してください。これにより、ログに記録されなかったエラーが出力されます。
私にとっては、sshdサービスをアンインストールし、再起動してからssh-Host-configを再実行して、 these の指示に従って、(ls -l /var/etc
が最初の試みで空のフォルダー以前に this チュートリアルを実行したため、これは理にかなっているSYSTEMによって所有されていました。しかし、このようにして、「/ var/emptyはグループまたは全世界で書き込み可能ではなく、ルートによって所有されている必要があります」というエラーが発生しました)。
クライアントシステムで、ポート22でSSHトンネリングオプションを実行しているRDPlus(www.rdplus.com.au)と呼ばれるプログラムを見つけました。Cygwinsshdが起動する前に無効にする必要がありました。 CMD.EXEから、アプリケーションイベントログで「0.0.0.0のポート22へのバインドに失敗しました」エラーを検出した後、「netstat -abo」がこのプロセスをポイントしました。 「o」オプションは、タスクマネージャーにあるPIDを表示します。
これを無効にするには、RDPlus管理ツールを実行し、[Web]タブに移動して、SSHトンネリングを無効にします。
これはsshdサーバーのエラーによって引き起こされているようです-私の場合は/etc/ssh_Host_rsa_key
permsでbarfされています-/var/log/sshd
などで調べてください。
私はcygwin1.dll
も含むCntlm
(NTLM認証プロキシ)を使用していましたが、そのような重複を回避することで問題は解決しました。
/ etc/passwd応答は非常に近いものでしたが、UID 74は彼のインストールに固有のものでした。
代わりに、このcygwinコマンドを使用して正しいUIDを取得します。
mkpasswd -l -u sshd >>/etc/passwd