報告と訂正

進歩を試みる

SSH接続と管理者権限の沼にハマった話

今回は私が陥った沼について書いていきます。

 

PC環境

OS -- Windows 10 Pro

Terminal -- Tera Term / cmd

 

f:id:MIZUNEKO:20200728221150j:plain

入れそうでは入れないSSH接続

 

SSH接続とは(・・?

ネットワーク接続されたリモートコンピュータに、安全に接続する手段

通信が暗号化されており安全にファイル等の編集操作ができるため、セキュリティ面での信頼性や時間短縮といった面でも優れた点を発揮し、幅広く利用されています。

 

なぜ沼にはまったの( ´∀` )?

原因として以下の仮説を立てました。

 

  • ファイルパスやコマンドディレクトリ(実行場所)が違う
  • 設定ファイルの編集ミスがある
  • PCのローカルユーザ名、フルネームが漢字表記である
  • 管理者権限がおかしい
  • PCの初期設定で把握できていない部分がバグを起こしている
  • ごみ箱内を削除した

 

TeraTermからのログイン

まずはTeraTermからログインしてみます。デスクトップからTeraTermを選択します。ホスト名はIPアドレスTCPポートにポート番号を入力してOKを押します。

f:id:MIZUNEKO:20200731001007j:plain

 

ユーザ名はcentos秘密鍵はファイルからpemファイルを選択してOKを押します。

f:id:MIZUNEKO:20200731001212j:plain

 

これでTeraTermにログインできました。

f:id:MIZUNEKO:20200731001326j:plain

 

task1:別ターミナルからSSHログイン

前記事のように、TeraTermからは以下のコマンドで設定ファイルをvi編集できます。

sudo vi resources/views/welcome.blade.php

 

しかしながら、別ターミナル(cmd)からログインできるか試してみます。

コマンドプロンプトを起動し「C:\Users\ユーザ名\.ssh」のディレクトリで以下のコマンドをたたいてみます。

ssh -p ポート番号 -i フルパスXXXX.pem centos@IPアドレス

 

エラー1

すると以下の内容でエラーが返ってきます。

 Could not create directory 'C:\\Users\\\346\261\240\346\260\264\350\210\252\344\270\200\346\234\227/.ssh'.
ディレクトリが作成できませんでした。」

The authenticity of host '[IPアドレス]:ポート番号 ([IPアドレス]:ポート番号)' can't be established.
「ホストのIPアドレスやポート番号の信頼性を確立できません(初回ログイン時特有のメッセージ)」

ECDSA key fingerprint is SHA256:ruVwS1jDtJNlK3iJ8rxGRX4m01Wo3Ch7By3JTAlUJh8.
Are you sure you want to continue connecting (yes/no)?
「指紋鍵であるSHA256を適用し、接続を続けますか?」

 

試したこと

ディレクトリが作成できませんでした。」というエラーからユーザ名が上手く読み込まれていないようです。

 

ユーザ名に漢字を使用しているので読み込まれないと感じ、参考サイトを見ながらローカルユーザ名を英語表記に変更したのですが、同時に管理者権限まで変更してしまい、その後いくつかのファイルが開けなくなりました。

 

さらにファイルのセキュリティ設定・詳細設定にも管理者権限が必要となりパスの移動も不可能となりました。

 

再度ユーザ名の変更を試みるも管理者権限に関するパスワードが合わず、パスワードを調べましたが答えは見つかりませんでした。再起動や設定変更を試みましたが、結局何かを変更する際には必ず管理者権限が必要で無限ループに入ってしまいました。

 

他にもファイルパスがおかしいと思い、以下のnoteを参考に対処を試みました。

windows環境の「visual studio code」から「Remote SSH」でサーバーにつなぐためのtips|existy|note

 

すると鍵場所の指定は、C:\Users[ユーザ名]\.ssh\[xxxx.pem]で良く、ファイルパスはうまくいっています。実際にTeraTermから入る際に表示されるパスと同じなので間違ってはいないと思います。

 

ならば英語表記のファイルをユーザ上に作成し、その中にpemとconfigを含む.sshファイルごと移動させてファイルパスから漢字表記を消そうとしました。

 

そこでユーザ上で新規ファイル作成を試みましたがユーザアカウント制御がかかり不可能でした(笑)

 

ならば既存の英語表記ファイルに.sshファイルごと移動しようとしましたが、ここでもユーザアカウント制御がかかりconfigファイルは移動できましたが、pemファイルはなぜか移動できず意味の分からない状態になっていきました。

 

次から次へと以下のエラーと警告の連鎖が続き、管理者としてのパスワードを何通り試しても上手くいかず、私は別の沼にはまってしまったようです(;^_^A

f:id:MIZUNEKO:20200730221657j:plain

f:id:MIZUNEKO:20200730230954p:plain

 

ユーザ > Administration > アカウントを無効にする でも以下のエラーがでます。

ユーザのプロパティを保存しようとしたときに次のエラーが発生しました
 
以下を参考にします。
 
「詳細設定」>「変更」を押してみると以下の応答が来ます(顔認証はできる)。
続行するには管理者のユーザ名とパスワードを入力してください
 
「おかえりなさいFirst name Last nameさん」
 
苗字 名前
パスワード入力欄
 
とでてきますがいつものパスワードではうまくいかないのです。
 
その下には「DESKTOP-KM72618¥苗字名前」と書いているので、
やはり管理者権限やユーザ名変更を深く考えずに実行したことを後悔しています。
 
 
上記サイトで復習してみると

 

Microsoftアカウントのユーザ名は苗字名前
ローカルユーザ名はFirst name Last name
ユーザアカウントのフルネームはFirst name Last name

 

ちなみにMicrosoftアカウントは変更可能ですがやる意味を感じません。
ローカルユーザやアカウントのフルネーム変更を選択すれば再びパスワードを要求されるためもうこのループから出られなくなりました。

 

後で調べて分かったのですが、ユーザ名変更はかなり手間がかかり権限にも深くかかわるため慎重に行う必要があります。できるなら新しくユーザ名を作成したいのですが、管理者としてサインインできないため、今となっては八方ふさがりになりました。

 

徐々に黒幕が判明していきましたが、このPCの初期設定と対処を怠った自分自身です。

f:id:MIZUNEKO:20200730234437p:plain

ふぁふぁふぁ

 

エラー2

さて、接続への質問ですが"yes"で返すと以下の内容でエラーが返ってきます。

Failed to add the host to the list of known hosts (C:\\Users\\\346\261\240\346\260\264\350\210\252\344\270\200\346\234\227/.ssh/known_hosts).
「既知のホストのリストへホストを追加できませんでした」

Load key "C:\\Users\\\346\261\240\346\260\264\350\210\252\344\270\200\346\234\227\\.ssh\\xxxxxx.pem": Permission denied
centos@IPアドレス: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
「鍵(C:\Users\ユーザ名\.ssh\xxxxxx.pem)をロードします➡アクセスが拒否されました;centos@IPアドレス➡原因;権限が拒否されました。」

 

またこれもユーザ名の読み込みが上手くいっていないようですね。

鍵の権限に関してもエラーとなっており、これも現段階のPC上設定では対処の使用がありません。

 

試したこと

ググりと権限の設定確認(-ω-)/

エクスプローラ>指定ファイル>プロパティ>設定ボタンを押すと以下の表示になります。

ユーザアカウント制御;

続行するには、管理者のユーザー名とパスワードを入力してください

 

繰り返しになりますが、私がユーザ名の変更を行ったことに起因しており、解決策はとにかく管理者権限を再設定することです。管理者設定を行うにも以下のように「管理者」としてではなく「標準ユーザ」としてサインインしているため手続きができません。

 

黄色の欄には「家族とその他のユーザ」欄が表示されておらず、水色の欄に管理者という記載がないという理由から、今は管理者としての権利がない状態であると理解できます。

 

f:id:MIZUNEKO:20200729182717j:plain

 

ここでターミナルから以下のコマンドを打ちます。

net user

すると以下の内容が返ってきました(驚愕)

 

AdministratorにはなじみのないDefaultAcountがあり、本来Administratorに記載されるはずのユーザ名がGuestに記載されていました。

 

Administratorとは、コンピュータネットワークの管理者そのものを意味しており、管理者権限を持つだけでなく、管理者として実行できるようにセーフモードによって再設定する必要があります。

f:id:MIZUNEKO:20200729221517j:plain

管理者。。

その後解決策に直結するような記事はほぼありませんでしたが、同じような応答があった記事もあり少し安心できました。

Windowsコマンド(net user) | コマンドの達人

https://www.youtube.com/watch?v=pXFjPYQxNGQ

 

さてどうしよう(-ω-)/

とりあえずはユーザアカウント制御で要求された「管理者のパスワード」を知る方法を探ってみましたが直結する答えは見つかりませんでした。

win 10 続行するには管理者のユーザー名と...解決! : 暇つぶしのおきて

Windows10 - Administrator(管理者)アカウントを有効にする方法 - PC設定のカルマ

Windows10 Homeで管理者権限のあるアカウントを消してしまってハマったことと対処法 - Qiita

管理者アカウントが消えた - マイクロソフト コミュニティ

管理者で実行ができない - 管理者で実行をすると「 続行する... - Yahoo!知恵袋

ユーザーアカウント制御で管理者パスワード入力欄が表示されず、「キャンセル」しか選択できません - マイクロソフト コミュニティ

管理者権限を持つアカウントでのログオンとは · Trend Micro for Home

[Windows]管理者Administratorでログインする方法 |

 

 

task2:VSCodeからSSH接続

VSCode拡張機能「Remote SSH」でサーバー側にアクセスしてみます。

f:id:MIZUNEKO:20200730143354j:plain

 

.ssh下には「config」と「pem」が入っているとして、以下に従い編集します。

Hostname;自分で設定したCentOS7インスタンスIPアドレス

Port;自分で設定したCentOS7インスタンスのポート番号

IdentityFile;ユーザ直下の管理者名

f:id:MIZUNEKO:20200730143416j:plain

 

準備ができたらホスト名を右クリックして「Connnecy to Host in Current Window」を選択します。

f:id:MIZUNEKO:20200730143435j:plain

 

すると以下の選択肢になりますが、サーバ側はLinuxだと思いLinuxを選択しました。

f:id:MIZUNEKO:20200730143452p:plain

 

エラー1

そして以下のようなエラーが出るので「Close Remote」で閉じます。

f:id:MIZUNEKO:20200731070026j:plain

 

ここで、Remote-SSHの出力は以下のようになっています。

f:id:MIZUNEKO:20200730143534j:plain

 

これはWindowsのサブシステムがインストールされ正常に作動したといえます。

>OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

 

気になるのは以下の応答ですが \( ´∀` )/? 

Terminal shell path: C:\WINDOWS\System32\cmd.exe

 

試したこと

以下のブログやnoteを参考にして他にもググっていきました。

VSCodeからCentOSにSSH接続する方法 - ぴよっ子エンジニアの日記

Remote-SSH プラグイン実行時にcould not to establish connection to エラー – Python あれこれ

Windows版VSCodeで秘密鍵の位置に関係なくSSHログインするには - Qiita

 

どうやらこのエラーが出ているということはWindowsにダウンロードされている余計なルートを辿っており、その内容を編集しているからエラーが出ているらしいです。

 

しかしながら、パスの変更やファイルの移動は管理者権限を持たない現状から不可能なので、パスワードを確認・再設定する方法があれば教えていただきたいです。

 

ちなみに以下の参考記事(議論)ものぞいてみました 

Remote-SSH: Fails to discover WSL SSH · Issue #937 · microsoft/vscode-remote-release · GitHub

 

主にWindowsにデフォルトでインストールされているWSL SSHの検出や再設定に関するお話で、パスを正しく受け入れるための方法(バックスラッシュの位置など)や環境変数設定(bash関連なので\( ´∀` )/? )が議論されていました。

 

ただ再設定に関しても諸々、PCの管理者権限を要するのでまたここに問どってきてしまいます。お手上げララバイ

 

エラー2

管理者権限に関する内容ですね。

f:id:MIZUNEKO:20200730143554p:plain

f:id:MIZUNEKO:20200730143612p:plain

 

試したこと

「プロセスが存在しないパイプに書き込もうとしました」をグーグル検索に貼り付け、かなりの量ヒットした中で、以下の記事を参考にプロパティの詳細設定を行いましたが管理者関連でストップしました。

 

全く同じエラー内容なので上述の管理者権限を直せば解決しそうですね。

VSCode + SSH 開発。Remote SSH 拡張機能を使ってみた - Corredor

Remote-SSH プラグイン実行時にcould not to establish connection to エラー – Python あれこれ

VSCodeのRemote SSHで「プロセスが、存在しないパイプに書き込もうとしました。」と出て繋がらない - Qiita

 

また、接続時にWinodowsやmacOSを選択したり、接続遮断後に「More Actions」を選択しても状況は変わりませんでした。

f:id:MIZUNEKO:20200730143626p:plain

 

最後に

こんなにも時間をかけて結果がPC設定に行きついてしまい情けないですが、これを教訓にPCをなめずによく調べ取り返しがつく状態で留める方法を図っていきます。

 

とにかく何も考えずにいじるのは危険でしたね。

 

以前ローカルにキャパがなくなり、なんとかして開けようとしたところ適当にいらないと思ったやつをかたっぱしから消して、それでもキャパが狭かったので、ゴミ箱を全部削除してしまった。これが全ての阻害かもしれないですね。

 

今回はユーザ名を焦って変更し、管理者権限を失い、PC操作設定に関する領域がなくなってしまいました。

 

これは余談ですが、一度インスタ開始3ヶ月でフォロワー500人までいく順調な軌道を保ちました。しかし、不要なフォロー数を減らそうとフォローしてくださる方を選別せずにとにかく片っ端から消していったところフォロワー数が340人まで急降下したのです。そこから再生を試みてはいるもの数字は上がらず、今ようやく466人という状況に持ち込んでいます。

 

今回の経験からも焦った後の自暴自棄は怖いと感じました。

取り返しのつかない沼にハマる前に調べて、人に聞くという行為が重要でした。

 

最後までお読みいただきありがとうございました。

 

※もし思ったこと、解決策やアドバイスなどがあればコメント欄にてお待ちしております。よろしくお願いいたします(>_<)//