내 방랑자 컴퓨터를 시작하고, 여러 터미널을 열고, 새로 열린 각 터미널에서 SSH를 통해 방랑자 컴퓨터에 연결하는 스크립트가 있습니다. 내 문제는 터미널이 5개 정도 필요한데 각 터미널의 비밀번호를 수동으로 입력하고 싶지 않다는 것입니다. 기본 터미널에서 한 번만 비밀번호를 입력하고 ssh 명령에서 동일한 비밀번호를 사용하는 방법이 있습니까?
#!/bin/bash
cd /home/kkri/public_html/freitag/vagrant
vagrant up
for run in $(seq 1 $1)
do
gnome-terminal --window-with-profile=dark -e "ssh vagrant@localhost -p 2222" --$
done
gnome-terminal --window-with-profile=git
clear
echo "~~~ Have fun! ~~~"
답변1
일반적으로 말하면(방랑자 또는 기타 시스템 관련 세부 정보는 무시) 가장 좋은 방법은 SSH 키를 사용하여 인증을 설정한 후 ssh-agent
다음과 같은 명령을 사용하여 SSH 세션을 여는 것입니다.
# load the key to the agent with a 10 s timeout
# this asks for the key passphrase
ssh-add -t10 ~/.ssh/id_rsa
for x in 1 2 3 ; do
ssh ....
done
또는 열쇠에 접근할 수 없는 경우 열쇠를 사용하여 무언가를 조립할 수 있습니다 sshpass
.
read -p "Enter password: " -s SSHPASS ; echo
for x in 1 2 3 ; do
sshpass -e ssh ...
done
unset SSHPASS
이렇게 하면 터미널이 중간에 있더라도 터미널 환경의 비밀번호 설정이 유지됩니다. 이 문제를 해결하려면 비밀번호를 파일에 임시로 저장할 수 있습니다.
read -p "Enter password: " -s SSHPASS ; echo
PWFILE=~/.ssh/secret_password
cat <<< "$SSHPASS" > "$PWFILE"
unset SSHPASS
for x in 1 2 3 ; do
sshpass -f "$PWFILE" ssh ...
done
shred --remove "$PWFILE"
비밀번호가 디스크에 입력되어 키가 더 좋아질 가능성이 있으므로 여전히 최선의 옵션은 아닙니다.
답변2
vagrant를 사용하고 있으므로 vagrant ssh
비밀번호를 입력하지 않고 ssh를 실행하여 상자에 연결할 수 있습니다. 여러 vagrant box가 실행 중이거나 기타 다양한 작업이 있는 경우 포트 충돌도 처리합니다.
또는 gnome-terminals 대신 tmux를 사용하고 동기화 창 기능을 활용할 수 있습니다.
#!/bin/bash
tmux_name="vagrantssh-$BASHPID"
tmux new -s $tmux_name -d
for run in $(seq 1 $1); do
tmux splitw -t $tmux_name -v "ssh vagrant@localhost -p 2222"
tmux select-layout -t $tmux_name tiled
done
tmux kill-pane -t 1
tmux set-window-option -t $tmux_name synchronize-panes on
tmux select-layout -t $tmux_name tiled
tmux new-window -t $tmux_name
tmux kill-window
tmux attach -t $tmux_name
그러면 tmux가 시작되고 지정한 만큼 많은 포드에서 ssh 명령이 실행됩니다. 모든 포드는 동기화됩니다(tmux는 키를 모든 포드에 전달합니다). 모든 창에서 필요한 작업을 완료한 후에는 입력 동기화 닫기를 ctrl+b
누를 수 있습니다. :set synchronize-panes off
편의상 키에 바인딩할 수 있습니다.
답변3
해결책은 더 안전하고 인증 문제를 해결하는 키 인증을 사용하는 것입니다.
키 쌍을 생성하려면 다음 명령을 사용하십시오.
ssh-keygen -t rsa
파일 내용을 서버 컴퓨터 ~/.ssh/id_rsa.pub
에 복사/붙여넣기합니다. ~/.authorized_keys
파일이 존재하지 않으면 사용자의 권한만 확인합니다.
제가 추천하는 여러 터미널을 사용하면 terminator
실제로 이와 같은 문제를 해결할 수 있습니다.모든 터미널에 키보드 방송특징