저는 Macbook SSH 터미널을 사용하고 RSA 키 쌍을 생성하고 id_rsa.pub
승인된 권한으로 원격으로 업로드하고 있습니다. 원격 Apache 웹 서버에 연결할 수 있습니다. 문제 없이 웹 서버에서 파일을 생성, 열기, 이동, 수정 및 예비 검사 관리할 수 있으며 오류 메시지도 생성되지 않습니다.
scp
놀랍게도 내 데스크톱의 폴더나 문서를 원격 서버로 전송할 수 없습니다 . 또한 scp
원격 서버의 폴더나 문서를 데스크탑으로 전송할 수 없습니다 . 오류 메시지가 나타날 때마다:
표준 입력: tty가 아님
원격 웹 서버와 주고받는 명령은 scp
절대 또는 상대 파일 위치 참조와 함께 작동하지 않습니다.
내 표준 구문은 다음과 같습니다.
로컬호스트에서:
scp -rp ~/Desktop/foldername [email protected]:~/public_html
원격 호스트에서:
scp -rp [email protected]:~/public_html/foldername ~/Desktop/
오류 메시지에 문제가 있는 것 같습니다 stdin: is not a tty
.
어떻게 되어가나요?
이 오류로 인해 파일 전송이 차단되면 어떻게 해결할 수 있나요 stdin: is not a tty
?
답변1
그 이유는 대상 서버의 로그인 스크립트 중 하나가 stty...
터미널 특성을 설정하는 데 사용되기 때문입니다. tty가 없으면 명령이 실패합니다. 즉, 를 사용하여 연결할 때입니다 scp
.
해결책은 stty
대화형 세션이 있을 때만 실행되도록 보호하는 것입니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 다음은 bash/sh 유형 쉘에 대한 몇 가지 예입니다.
못생긴:
stty ... >/dev/null 2>&1
나를 위해 일했습니다 :
test -n "$PS1" && stty ...
존경받는SE의 다른 곳:
# Check for a bash login shell
case $- in
*i*) stty ... ;;
esac
답변2
이것이 OSX sshd 구현에 중요한지 잘 모르겠지만 일부 시스템에서는 tty가 없으면 ~/ 규칙이 포함된 암시적 홈 디렉터리가 확장되지 않을 수 있으며 예상치 못한 결과가 나타날 수 있습니다. 이것이 확실하지 않다는 것을 알고 있지만 ~/ 구문 대신 전체 경로 이름을 사용해 보십시오.
답변3
내 .bash_profile을 로드하려고 할 때 이런 일이 발생합니다. 나는 추가했다
[ -z "${PS1}" ] && return;
맨 위에는 해결됐네요