[過去ログ] PowerShell -Part 3 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
963: 2019/11/18(月)15:09 ID:Crm1ovkb(1/7) AAS
test 452452424524524
964: 2019/11/18(月)15:10 ID:Crm1ovkb(2/7) AAS
Windows 10 に標準搭載された OpenSSH と PowerShell の機能だけを使用して、公開鍵をサーバにアップロードしたいと考えています。
(ssh-copy-id は shell スクリプトなので Windows 版の OpenSSH には含まれていない)
965: 2019/11/18(月)15:11 ID:Crm1ovkb(3/7) AAS
調べた結果、まず以下のコマンドが cmd.exe 上では完璧に動作することを確認しました。
※元のコードを貼ると 403 Forbidden となるので Pastebin を使ってます
外部リンク:pastebin.com

これを以下の通り PowerShel に置き換えました。
外部リンク:pastebin.com

一応、公開鍵のアップロードまでは出来たんですけど、ssh.exe のプロセスが終了しません。
(wait = $true にした場合はプロンプトが返ってこない)
何が悪いんでしょうね。
966: 2019/11/18(月)15:15 ID:Crm1ovkb(4/7) AAS
追伸:CloudFlare で 403 Forbidden になってたのはレスに cmd.exe という文字列が含まれいたのが原因のようです。コードは関係なかったっぽい。
967: 2019/11/18(月)15:35 ID:Crm1ovkb(5/7) AAS
どうやら、ssh.exe に対して公開鍵の文字列をパイプで渡した場合は正常終了するのですが、標準入力で渡した場合はプロセスが残ることが分かりました。
cmd.exe 上でも、標準入力で渡した場合はプロセスが残ります。
Start-Process は「You cannot pipe input to this cmdlet.」とのことでパイプからの入力を受け付けないんですけど、なにか良い手はないですかね?
968: 2019/11/18(月)16:07 ID:Crm1ovkb(6/7) AAS
何度もすみません、自己レス。

パイプならよかろう、ということで以下の3パターンで試したところ、ssh.exe は正しく終了するようになったのですが、authorized_keys には CL+LF が追加されてしまいました。
$PubKey = Get-Content "${home}\.ssh\id_rsa.pub"
Write-Output $PubKey -NoEnumerate | ssh root@${DST} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Out-String -InputObject $PubKey | ssh root@${DST} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
type "${home}\.ssh\id_rsa.pub" | ssh root@${DST} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

最終的に、これで妥協しました。ダサい。もっとスマートな書き方はないものだろうか。
外部リンク:pastebin.com
969: 2019/11/18(月)16:13 ID:Crm1ovkb(7/7) AAS
ごめんなさい、標準入力では ssh.exe が終了しない原因が分かりました。
sshkeygen で生成された id_rsa.pub は、行末で改行していないためでした。
エディタで開いて改行させたところ、
外部リンク:pastebin.com
これでも動作しました。

お騒がせしました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s