이 답변은 보안을 강화 하여 선택한 답변 을 모두 개발합니다 .
그 대답은 일반적인 형태를 논의했습니다
<command that makes output> | \
ssh <user A>@<host A> <command that maps stdin to clipboard>
어디에서 보안이 부족 할 수있다하면에 ssh
권한 허용 <user B>
에 host B>
에 ssh
에 host A
하고 실행할 수 있는 명령을 사용합니다.
물론 B
에 A
액세스 이미에 의해 문이 될 수 있습니다 ssh
키, 그리고 심지어 암호가있을 수 있습니다. 그러나 다른 보안 계층은 예를 들어 호출 할 수없는 B
에서 실행할 수 있는 허용 가능한 명령의 범위를 제한 할 수 있습니다. ( 키 가 그렇지 않을 때 특히 중요합니다.A
rm -rf /
ssh
에 비밀번호 합니다.
다행히도 명령 제한 또는 강제 명령ssh
이라는 내장 기능이 있습니다. ssh.com 또는이 serverfault.com 질문을 참조하십시오 .
아래 솔루션은 명령 제한 과 함께 일반 양식 솔루션을 보여줍니다.ssh
적용을 .
명령 제한이있는 솔루션 예 추가 된
이 보안 강화 솔루션은 일반적인 형식을 따릅니다. ssh
세션에서 의 호출은 다음과 같습니다 host-B
.
cat <file> | ssh <user-A>@<host A> to_clipboard
이것의 나머지 부분은 작동하도록 설정을 보여줍니다.
의 설정 ssh 명령 제한
사용자 계정이 B
is user-B
이고 B에 ssh 키 id-clip
가 있으며 일반적인 방법으로 생성되었다고 가정합니다 ( ssh-keygen
).
그런 다음 user-A
ssh 디렉토리에 파일이 있습니다.
/home/user-A/.ssh/authorized_keys
키를 인식하고 연결을 id-clip
허용 ssh
합니다.
일반적으로 각 줄의 내용 authorized_keys
은 정확히 공개 키 (예 :의 내용)입니다 id-clip.pub
.
그러나, 공개 키 내용이 실행될 명령에 의해 (같은 행에) 추가되도록 명령 제한 을 시행 합니다.
우리의 경우 :
command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>
지정된 명령 "/home/user-A/.ssh/allowed-commands.sh id-clip"
및 전용 키 때마다 명령을 지정 즉, 실행 id-clip
사용이 시작 ssh
연결 host-A
- 서면 어떤 명령없이 ssh
명령 줄을 .
이 명령은 스크립트 파일을 나타내며 해당 스크립트 파일 allowed-commands.sh
의 내용은
#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
Id=${1}
case "$SSH_ORIGINAL_COMMAND" in
"to-clipboard")
notify-send "ssh to-clipboard, from ${Id}"
cat | xsel --display :0 -i -b
;;
*)
echo "Access denied"
exit 1
;;
esac
ssh
기계 를 처음 호출했을 B
때
... | ssh <user-A>@<host A> to_clipboard
문자열 to-clipboard
은 allowed-commands.sh
환경 변수 에 의해 전달됩니다 SSH_ORIGINAL_COMMAND
. 또한 우리는 키만 액세스 id-clip
하는 줄에서 키 이름을 전달 authorized_keys
했습니다.id-clip
.
라인
notify-send "ssh to-clipboard, from ${Id}"
클립 보드가 작성되고 있음을 알려주는 팝업 메시지 상자 일뿐입니다. 보안 기능도 좋습니다. ( notify-send
우분투 18.04에서 작동하며 아마도 다른 것은 아닙니다).
라인에서
cat | xsel --display :0 -i -b
--display :0
프로세스에는 클립 보드가있는 자체 X 디스플레이가 없으므로 매개 변수 가 필요하므로 명시 적으로 지정해야합니다. 이 값 :0
은 Wayland 윈도우 서버가있는 Ubuntu 18.04에서 작동합니다. 다른 설정에서는 작동하지 않을 수 있습니다. 표준 X 서버의 경우이 답변 이 도움 이 될 수 있습니다.
host-A
/etc/ssh/sshd_config
매개 변수
마지막으로 /etc/ssh/sshd_config
호스트 의 몇 가지 매개 변수는 A
연결 권한과 ssh
암호없이 -key 만 사용할 수 있도록 설정해야 합니다.
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A
만들려면 sshd
서버 설정을 다시 읽기
sudo systemctl restart sshd.service
또는
sudo service sshd.service restart
결론
그것을 설정하는 것이 약간의 노력이지만, 다른 기능 to-clipboard
은 동일한 프레임 워크와 병렬로 구성 될 수 있습니다.
:'<,'>w !ssh desktop pbcopy