๋ฐ์ํ
๋ฆฌ๋ ์ค์์ ํจ์ค์๋ ์ ๋ ฅ ์์ด ssh ์ ์ํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ์ ๋ฆฌํฉ๋๋ค.
1. ํจ์ค์๋ ์ ๋ ฅ ์์ด ์ ์ํ ์๋ฒ์ ์ํธํ ํค๋ฅผ ๋ฑ๋กํ์ฌ ์๋๋ก๊ทธ์ธ์ ํฉ๋๋ค.
โพ rsa ํค ์์ฑ์ด ์๋์์ ๊ฒฝ์ฐ ์์ฑํด ์ค๋๋ค.
ssh-keygen -t rsa
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): ## ()๊ดํธ ์์น๋ก ์ฌ์ฉํ ๊ฑฐ๋ฉด Enter
Enter passphrase (empty for no passphrase): ## ํจ์ค์๋ ์์ด ์ฌ์ฉํ ๊ฑฐ๋ฉด Enter
Enter same passphrase again: ## Enter
โพ authorized_keys ํ์ผ์ด ์์ผ๋ฉด ์์ฑํ๋ฉด ๋ฉ๋๋ค.
chmod 700 ~/.ssh ## 700์ผ๋ก ๊ถํ ๋ณ๊ฒฝ
cd ~/.ssh ## .ssh๊ฒฝ๋ก ์ด๋
cat id_rsa.pub >> authorized_keys ## ๋ณต์ฌํ ๊ณต๊ฐํค๋ฅผ ์ธ์ฆํค ํ์ผ์ ์
๋ ฅํด์ค
chmod 600 authorized_keys ## private key์ ํผ๋ฏธ์
์ด ๋๋ฌด open๋์ด ์์ผ๋ฉด ์ ์ํ ์ ์์ด์ ๋ณ๊ฒฝํด์ค
rsync -av .ssh server01:/root ## passwordless ์ค์ ํ ์๋ฒ๋ค์ .ssh ๋๋ ํ ๋ฆฌ ๋ณต์ฌ
rsync -av .ssh server02:/root
rsync -av .ssh server03:/root
## ๋ฌธ์ ์ ์๋ ํญ๋ชฉ ํ์ธ
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/known_hosts
[root@localhost ~]# ll -d /root
dr-xr-x---. 5 root root 4096 Feb 28 16:22 /root ## root ๊ถํ์ด 550์ผ๋ก ๋์ด ์์ด์ผํจ
โพ passwordless ์ค์ ํ ์๊ฒฉ ์์
๋ ์ ์ฉํ ๋ฐฉ๋ฒ์
๋๋ค.
2021.03.04 - [Tech/Linux] - [๋ฆฌ๋
์ค] ์ฌ๋ฌ ์๋ฒ ์๊ฒฉ ์์
(parallel-ssh, ssh remote shell)
2. sshpass ๋ช ๋ น์ด๋ก ํจ์ค์๋ ์ ๋ ฅํ์ฌ ssh ์ ์ (sshpass ์ค์น ํ์)
sshpass ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ค์๋๋ ์ ๋ ฅํ๋ ๋ณ๋์ ํจ์ค์๋ ํ์ธ ๋จ๊ณ ์์ด ์ ์ ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ sshpass๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋ค๋ฅธ ์๋ฒ์ ๋ช ๋ น์ด๋ฅผ ํธ์ถํ์ฌ ์์ ๋ ํ ์ ์์ต๋๋ค.
"command" > ์ฌ๊ธฐ ์ ๋ ฅํ์ธ์.
sshpass -p'password' ssh root@hostname "command"
๐ ์ฐธ๊ณ
์ฌ๋ฌ ์๋ฒ์ ์ ์ฉํ๋ remote ์์ ๋๋ค.
- hosts ํ์ผ์ ์ ์ฉํ ์๋ฒ ๋ชฉ๋ก๋ค์ ์ ์ฅํฉ๋๋ค
#!/bin/bash
for target_host in `cat hosts`
do
sshpass -p '$password' ssh -o StrictHostKeyChecking=no ${target_host} 'mkdir -p ~/.ssh' && cat ~/.ssh/id_rsa.pub | sshpass -p 'hadoop' ssh ${target_host} "cat > ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 0644 ~/.ssh/authorized_keys"
echo "---------------------------------------------------"
done