내가 이것을 실행하면 :
ssh user@server 'mysql -u user -p'
MySQL 비밀번호를 묻는 메시지가 표시되고 입력을 시작하면 비밀번호가 화면에 표시됩니다. 이 문제를 어떻게 방지 할 수 있습니까? 로그인 ssh
하여 MySQL 명령을 실행하면 모든 것이 잘 작동합니다.
내가 이것을 실행하면 :
ssh user@server 'mysql -u user -p'
MySQL 비밀번호를 묻는 메시지가 표시되고 입력을 시작하면 비밀번호가 화면에 표시됩니다. 이 문제를 어떻게 방지 할 수 있습니까? 로그인 ssh
하여 MySQL 명령을 실행하면 모든 것이 잘 작동합니다.
답변:
실행할 원격 명령을 제공하면 SSH는 tty를 할당하지 않으므로 원격 명령은 에코를 비활성화 할 수 없습니다. 다음 -t
옵션을 사용하여 SSH가 tty를 제공하도록 할 수 있습니다 .
ssh -t user@server 'mysql -u user -p'
동등한 옵션 ( -o
구성 파일 용 또는 구성 파일 용)은 RequestTTY
입니다. 비 대화식 명령에 원치 않는 영향을 줄 수 있으므로 config에서 사용하지 않도록주의 해야합니다 .
RequestTTY
에서 man 5 ssh_config
.
원격 컴퓨터의 보안을 [*] 신뢰할 수 있는 경우 설명서의 암호 보안 에 대한 최종 사용자 지침 장 에서 제안한대로 각 암호 를 통해 통신 ssh
하거나 입력 할 필요없이 적절히 보호 된 옵션 파일에 암호를 저장할 수 있습니다. 시각.
특히 .my.cnf
홈 디렉토리 에있는 파일의 [client] 섹션에 행을 추가 할 수 있습니다 .
[client]
password=your_pass
물론 파일 액세스 모드를 400 또는 600으로 설정하여 파일을 자신 이외의 사람이 액세스 할 수 없도록해야합니다.
chmod 600 ~/.my.cnf
그런 다음과 같은 것을 사용할 수 있습니다
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
user110971
계정의 사용자 이름은 어디에 있습니까 ?
ssh -t
) 를 할당하도록 강제이 문제는 명령을 보낼 때마다 발생 ssh
하며 기본적 ssh
으로 pseudo-tty를 할당하지 않기 때문에 입력을 삽입해야합니다 .
옵션으로 tty 할당을 강제 할 수 있습니다 -t
(필요한 경우 둘 이상).
-t
의사 -tty 할당을 강제합니다. 이는 원격 컴퓨터에서 임의의 화면 기반 프로그램을 실행하는 데 사용할 수 있으며, 예를 들어 메뉴 서비스를 구현할 때 매우 유용합니다. ssh에 로컬 tty가없는 경우에도 여러
-t
옵션이 tty 할당을 강제합니다.
이 데비안 게시물 (Jul_11_2008)에서 에 대해 읽을 수 있듯이 sudo
, 반복되는 것을 좋아하는 오래된 문제입니다.
ssh user@server "sudo ls" password: password
그리고 비밀번호가 표시됩니다
해결책은 ssh가 -t 플래그와 함께 의사 tty를 강제로 할당하도록하는 것입니다.
ssh -t user@server sudo ls
[*] 사용자 만 액세스 할 수있는 파일에 비밀번호를 그대로두고 작업중인 클라이언트에서 루트를 사용할 수있는 경우.
OS를 변경하는 원격 컴퓨터를 재부팅하거나 HDD를 제거 할 수 있다면 컴퓨터를 완전히 안전한 것으로 간주 할 수는 없지만 데이터베이스 자체는 안전하지 않습니다.