SSH를 통해 고양이를 수행하고 SSH를 통해 텍스트 또는 파일을 보냅니다.

SSH를 통해 고양이를 수행하고 SSH를 통해 텍스트 또는 파일을 보냅니다.

안녕하세요, 공개 키 전송을 자동화하는 스크립트를 만들고 있지만 "echo 또는 cat"을 사용하여 ssh를 통해 파일이나 변수를 보낼 수 없습니다.

답변1

원격 서버로 파일을 보내려면 를 사용할 수 있습니다 scp.

남자 scp에서 :

scp는 네트워크의 호스트 간에 파일을 복사합니다. 데이터 전송에 ssh(1)을 사용하고, ssh(1)과 동일한 인증을 사용하고 동일한 보안을 제공합니다. rcp(1)과 달리 scp는 인증에 필요한 경우 비밀번호나 패스프레이즈를 요청합니다.

기본 사용법:

scp user@origin:/path/to/file user@target:/path/to/file

SERVERexample.txt를 현재 디렉터리에서 루트로 인증하는 example이라는 폴더에 있는 동일한 이름을 가진 원격 서버로 전송한다고 가정합니다 .

scp example.txt root@SERVER:/example/example.txt

답변2

공개 키를 원격 서버로 전송하기 위한 전용 유틸리티가 있습니다.SSH-복사-ID.

위에서 이 작업을 자동화하는 데 사용할 수 있는 스크립트를 찾을 수 있습니다.

#!/bin/sh
while read server ; do
   timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>

추신: <> 사이의 상수를 원하는 값으로 바꾸세요.

답변3

sshpass다음과 같이 매번 비밀번호를 입력하지 않고도 스크립트에서 서버에 액세스 할 수 있습니다 .

sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER

-f또한 server.list라는 서버 목록에 대해 명령줄(두 경우 모두 일반 텍스트로 되어 있음)에 암호를 쓰고 싶지 않은 경우 파일에 암호를 쓰는 데 사용할 수 있습니다.

for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done

관련 정보