SCP를 사용할 때 비밀번호가 표시됩니까?

SCP를 사용할 때 비밀번호가 표시됩니까?

RHEL8(ssh를 통한 기본 bash 쉘)

> scp source_path remote_host:destination_path &
> fg
Password: @#$#@#myPassword'sVisibleOhNo!!!

우선, 이것은 단지 내 시스템입니까, 아니면 재현할 수 있습니까? 사용자를 묻는 메시지가 표시되지 않으며 백그라운드에서 scp를 실행할 때만 발생합니다(처음에는 이해가 안 되지만 여전히). 이것이 예상되는 동작입니까? 이것이 문제가 아닌가?

답변1

scp입력한 문자를 에코하는 쉘이 아니라 실행 중인 프로그램에서 제공한 설정을 기반으로 하는 커널입니다 . ( stty이 설정을 수정하세요).

를 입력하면 에코가 발생하지 않으며 정상적인 동작을 복원하려면 stty -echo(맹목적으로) 입력해야 합니다 .stty echo

bash를 사용하면 stty -echo &TTY 상태가 다시 에코 모드로 전환되는 것 같습니다. 와 같을 수도 있습니다 scp. 동작은 셸에 따라 다를 수 있지만 Fish와 zsh는 bash와 동일한 동작을 하는 것으로 보입니다.

답변2

@Frédéric Loyer의 답변 덕분에 더 관련성 높은 정보를 얻을 수 있었습니다. 다음 스크립트 중 하나를 사용하여 scp와 유사한 동작을 확인할 수 있습니다.

> safe () (stty -echo; read password; stty echo)
> safe &

그렇지 않으면

> (stty -echo; read password; stty echo)

fg궁극적으로 근본적인 문제(보안 및 기타)는 scp에만 국한된 것이 아니라 쉘의 에코 설정 간의 잘못된 상호 작용과 관련이 있습니다. 이는 stty -echo/echo개별적으로 수동으로 활성화/비활성화할 수 있습니다. 이를 통해 여러 호스트, SSH 연결 등을 요구하지 않고도 다양한 시스템의 특정 동작을 검사할 수 있습니다.

MacOS의 zsh

> safe () (stty -echo; read password; stty echo)
> safe &
[1] 12345
>
[1]  + suspended (tty output)  safe
> fg
[1]  + continued  safe
stty: tcsetattr: Interrupted system call
im Getting The Same Issue(macOS zsh now)
>

RHEL 및 Ubuntu의 Bash는 더욱 나쁩니다.

> (stty -echo; read password; stty echo) &
[1] 12345
> fg
( stty -echo; read password; stty echo )

[1]+  Stopped                 ( stty -echo; read password; stty echo )
> fg
( stty -echo; read password; stty echo )
VisiblePassword!!!
>

첫 번째 fg 후에는 완전히 응답하지 않게 됩니다. ctrl+z와 다른 fg를 실행해야 합니다.

관련 정보