USB-RS232 어댑터를 통해 지원해야 하는 장치에 연결하기 위해 클라이언트 사이트에서 사용할 수 있도록 Raspberry-Pi가 포함된 역방향 SSH 장치를 설정했습니다. 고객의 IT 직원과 함께 문제를 해결했으며 장치가 구성, 테스트되었으며 제대로 작동합니다.
이 아니라면로컬 네트워크 액세스 향상, 역방향 SSH 터널을 통한 로그인만 허용하고 로컬 고객 네트워크의 누구도 로그인할 수 없도록 로그인을 제한하고 싶습니다.
나가는 역방향 SSH 연결은 비밀번호 없이 4096비트 키 파일을 사용하여 서버에 연결하지만, 역방향 SSH 연결을 통해 서버에서 Pi에 다시 연결할 때 여전히 사용자/비밀번호 프롬프트가 표시됩니다. 이것은 나에게 문제가 되지 않지만, 로컬 텔넷이나 SSH를 사용하여 로컬로 로그인하는 모든 사람의 능력을 제한하는 것이 걱정됩니다. 유일하게 활성화된 계정에 좋은 비밀번호를 설정해 두었으니 누가 성공적으로 로그인할 수 있을지 의심스럽습니다.
유지 관리 목적으로 연결된 USB 키보드를 사용하여 로컬 컴퓨터에 로그인할 수 있으면 좋겠지만 필수 사항은 아닙니다. 장치는 잠긴 방의 잠긴 금속 인클로저 내부에 있으므로 무단 물리적 접근은 큰 문제가 되지 않습니다. 역방향 SSH 터널을 통해 SSH 로그인을 허용하면서 텔넷 및 SSH 로그인에 대한 로컬 네트워크 액세스를 잠그고 싶습니다.
답변1
RPi ssh
데몬 의 경우 sshd_config
및 AllowUsers
옵션을 참조하세요. 여기서 호스트 이름을 지정할 수 있습니다.
역방향 터널링이므로 연결이 localhost
다른 곳 에서 올 수 있습니다.
AllowUsers yourusername@localhost
위치 /etc/ssh/sshd_config
(또는 OS가 배치하는 위치)이면 충분할 수 있습니다. 변경한 후에는 재부팅 sshd
(또는 그냥 SIGHUP) 하는 것을 잊지 마세요 sshd_config
.
그냥 터치하기만 하면 되기 때문에 sshd
시리얼 콘솔 로그인에는 영향을 주지 않습니다.
답변2
RPi는 서버에 연결한 다음 역방향 SSH 터널을 생성하므로 sshd
RPi의 localhost에서 실행할 수 있습니다.
먼저 다음과 같이 RPi에서 서버로 호출을 bind_address
수행하는 역방향 터널 명령을 추가합니다.ssh
ssh -R localhost:6060:localhost:22 -i path/to/key me@server
예, 두 번입니다 localhost
.
localhost:22
트래픽이 리디렉션되는 RPi의 위치입니다.localhost:6060
서버에서 수신 대기할 포트입니다(서버가 인터넷에서 사용 가능하므로 이것이 localhost라고 생각할 수 있으므로 localhost에 있기를 원할 수도 있고 원하지 않을 수도 있습니다).
이제 RPi에 /etc/ssh/sshd_config
다음을 추가할 수 있습니다:
ListenAddress 127.0.0.1
다시 시작하세요 sshd
.
이제 RPi는 소켓이 바인딩되어 있으므로 localhost
(루프백에서 로컬 IP가 있는 인터페이스와 다른 인터페이스) 로컬 네트워크의 포트 22에 대한 연결을 거부하지만 소켓이 명시적으로 바인딩되어 있기 때문에 역방향 SSH 터널에 응답합니다. localhost
터널의 RPi 쪽.
ssh -p 6060 user@rpi
서버에서 정상적으로 RPi에 연결됩니다.
참고: RPi가 로컬 네트워크의 연결에 다시 응답하도록 하는 쉬운 방법이 없으므로 이는 위험할 수 있습니다. 뭔가 크게 잘못되면 문제를 해결할 수 있는 유일한 방법은 그곳에 가서 화면과 키보드를 연결하는 것입니다. 진지하게, 먼저 테스트해 보세요. 어딘가에 오타가 있으면 물리적 접근이 필요할 것입니다.
참고 2: 이 솔루션과 Stephen Harris 솔루션의 유일한 실제 차이점은 RPi가 이제 포트 22에 대한 연결을 거부한다는 것입니다. 당신이 그것을 원하는지 아니면 연결을 허용하고 승인을 거부하기를 원하는지는 선호의 문제입니다(또는 허니팟 디자인 :)).