【지옥으로부터의 생환】SSH・Connection refused라고 하면

EC2로 SSHssh: connect to host 13.112.***.*** port 22: Connection refused라고 말해 버린 패턴입니다. 이것은 슈퍼 힘들다. 왜냐하면 서버에 로그인해 조작할 수 없기 때문에 아무것도 처치를 베풀 수 없는 것입니다.

자신은 일본어로 보통 검색해도 이것이라고 말한 방법을 모르고, 영어의 문헌도 맞추고 하는 방법을 조사했으므로 비망록적으로 여기에 남기고 싶습니다.

먼저 AWS의 EC2 화면으로 들어가서 해당 인스턴스를 선택하고 Actions에서 InstanceSetting에서 Get Syslog로 로그를 확인합니다. Dmsg한 결과와 동등한 것입니다.



그렇게 하면 일어나고 있는 일이 왠지 알 수 있습니다만, 자신의 경우는 Rails의 앱을 무리하게 릴리스하기 위해서/var 부하를 root로부터 ec2-user의 소유권으로 바꾸어 버린 것이 재앙하고 있었습니다 .

고치고 싶습니다 ...하지만 (로그인 할 수 없기 때문에) 고칠 수 없습니다 ... 굉장한 갈등입니다. 정직별 인스턴스 세워 포기하는 곳까지 갔습니다.
하지만 포기할 수 없는 사람을 위해 아래 처방전입니다.

간단히 말하면 다른 인스턴스를 만들어 EBS 볼륨을 바꿔서 조작하는 방법입니다.

【순서】
  • 새 인스턴스 생성(원래 AmazonLinux와 동일한 구성이 바람직함)
  • 원래 인스턴스의 인스턴스 ID를 제외하고 EC2 화면에있는 ElasticBlockStore의 Volume에서 대기하는 인스턴스 ID로 검색하여 걸린 볼륨을 선택합니다.
  • 원래 인스턴스의 Syslog를 다시 보며 sshd보다 먼저 실행중인 스크립트 이름을 그대로 두십시오 (이미지 참조).
  • 원래 인스턴스를 STOP(이렇게 하지 않으면 제거할 수 없음)
  • 원본 인스턴스의 볼륨을 Action에서 Detach
  • 이어서 1. 에서 만든 인스턴스에 Attach (이 경우 장치 이름은/dev/xvdf)
  • 새로 생성된 인스턴스에 SSH로 액세스
  • Attach 된 볼륨 마운트
  • sudo mount /dev/xvdf1 /mnt/data -t ext4
    注:マウントした先の名前と最後だけ変える
    マウントしたボリュームの確認はmountコマンドで可能
    
  • 다시 원래 인스턴스의 Syslog 및/mnt/data/etc/init.d 부하의 스크립트를 보아 sshd 이외로 움직이고 있는 스크립트를 열어 (이번은 rngd)
  • sudo vi /etc/init.d/rngd (Syslog見てsshdより前に読み込むスクリプトならどれでもOK)
    
    起動時に実行したいスクリプトを書き込む
    chown -R root.root /var
    
  • attach 된 볼륨을 마운트 해제
  • umont /mnt/data
    
  • EC2의 관리 화면으로 돌아가 해당 볼륨을 detach 한 후 원래 인스턴스에 attach 할 때의 마운트 대상은/dev/xvda 로 한다(그렇지 않으면 부팅시 볼륨으로 인식되지 않기 때문에)
  • 원래 인스턴스를 시작하고 Syslog를 확인합니다.

    이것으로 에러가 나오지 않는 것을 확인할 수 있으면 SSH로 액세스 할 수 있다고 생각합니다. 핀치 때는 부디 부디.
  • 좋은 웹페이지 즐겨찾기