-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-ssh.sh
More file actions
executable file
·154 lines (139 loc) · 5.97 KB
/
Copy pathsetup-ssh.sh
File metadata and controls
executable file
·154 lines (139 loc) · 5.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/bash
# SSH 키 생성 및 서버 등록 스크립트
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🔐 StoryG SSH 키 설정 가이드"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# 서버 정보
DEV_SERVER_HOST="${DEV_SERVER_HOST:-100.50.98.194}"
DEV_SERVER_USER="${DEV_SERVER_USER:-root}"
# ── 1. SSH 키 확인 ────────────────────────────────────────
echo ""
echo "1️⃣ SSH 키 확인 중..."
if [ -f ~/.ssh/id_rsa ] || [ -f ~/.ssh/id_ed25519 ]; then
echo "✅ 기존 SSH 키가 있습니다:"
ls -la ~/.ssh/id_* 2>/dev/null | grep -v ".pub"
echo ""
read -p "기존 키를 사용하시겠습니까? (y/n): " USE_EXISTING
if [ "$USE_EXISTING" != "y" ]; then
CREATE_NEW=true
else
CREATE_NEW=false
fi
else
echo "⚠️ SSH 키가 없습니다."
CREATE_NEW=true
fi
# ── 2. SSH 키 생성 ────────────────────────────────────────
if [ "$CREATE_NEW" = true ]; then
echo ""
echo "2️⃣ SSH 키 생성 중..."
echo ""
read -p "이메일 주소를 입력하세요 (키 식별용): " EMAIL
# Ed25519 키 생성 (더 안전하고 빠름)
ssh-keygen -t ed25519 -C "$EMAIL" -f ~/.ssh/id_ed25519 -N ""
if [ $? -eq 0 ]; then
echo "✅ SSH 키 생성 완료!"
echo " 공개키: ~/.ssh/id_ed25519.pub"
echo " 개인키: ~/.ssh/id_ed25519"
else
echo "❌ SSH 키 생성 실패"
exit 1
fi
fi
# ── 3. 공개키 확인 ────────────────────────────────────────
echo ""
echo "3️⃣ 공개키 확인:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# 사용할 공개키 선택
if [ -f ~/.ssh/id_ed25519.pub ]; then
PUB_KEY_FILE=~/.ssh/id_ed25519.pub
elif [ -f ~/.ssh/id_rsa.pub ]; then
PUB_KEY_FILE=~/.ssh/id_rsa.pub
else
echo "❌ 공개키를 찾을 수 없습니다."
exit 1
fi
PUB_KEY=$(cat "$PUB_KEY_FILE")
echo "$PUB_KEY"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# ── 4. 서버에 공개키 등록 ──────────────────────────────────
echo ""
echo "4️⃣ 서버에 공개키 등록"
echo ""
echo "서버: $DEV_SERVER_USER@$DEV_SERVER_HOST"
echo ""
echo "다음 중 하나의 방법을 선택하세요:"
echo "1) ssh-copy-id 사용 (자동 등록, 비밀번호 필요)"
echo "2) 수동으로 공개키 복사 (서버 관리자에게 전달)"
echo ""
read -p "선택 (1 또는 2): " COPY_METHOD
if [ "$COPY_METHOD" = "1" ]; then
echo ""
echo "📤 ssh-copy-id로 공개키 전송 중..."
echo "⚠️ 서버 비밀번호를 입력하세요:"
ssh-copy-id -i "$PUB_KEY_FILE" "$DEV_SERVER_USER@$DEV_SERVER_HOST"
if [ $? -eq 0 ]; then
echo "✅ 공개키 등록 완료!"
else
echo "❌ 공개키 등록 실패"
echo ""
echo "수동 등록 방법:"
echo "1. 위에 표시된 공개키를 복사하세요"
echo "2. 서버에 접속: ssh $DEV_SERVER_USER@$DEV_SERVER_HOST"
echo "3. 다음 명령 실행:"
echo " mkdir -p ~/.ssh"
echo " echo '$PUB_KEY' >> ~/.ssh/authorized_keys"
echo " chmod 700 ~/.ssh"
echo " chmod 600 ~/.ssh/authorized_keys"
exit 1
fi
elif [ "$COPY_METHOD" = "2" ]; then
echo ""
echo "📋 공개키를 클립보드에 복사합니다."
echo "$PUB_KEY" | pbcopy 2>/dev/null || echo "$PUB_KEY"
echo ""
echo "서버 관리자에게 다음 정보를 전달하세요:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "공개키:"
echo "$PUB_KEY"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "서버에서 실행할 명령:"
echo " mkdir -p ~/.ssh"
echo " echo '$PUB_KEY' >> ~/.ssh/authorized_keys"
echo " chmod 700 ~/.ssh"
echo " chmod 600 ~/.ssh/authorized_keys"
echo ""
read -p "서버에 등록이 완료되었나요? (y/n): " REGISTERED
if [ "$REGISTERED" != "y" ]; then
echo "⚠️ 서버에 공개키를 등록한 후 다시 시도하세요."
exit 1
fi
else
echo "❌ 잘못된 선택입니다."
exit 1
fi
# ── 5. SSH 접속 테스트 ────────────────────────────────────
echo ""
echo "5️⃣ SSH 접속 테스트 중..."
ssh -o ConnectTimeout=5 -o BatchMode=yes "$DEV_SERVER_USER@$DEV_SERVER_HOST" "echo 'SSH connection successful'" 2>&1
if [ $? -eq 0 ]; then
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ SSH 접속 성공!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "이제 배포 스크립트를 실행할 수 있습니다:"
echo " ./deploy-dev.sh"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
else
echo ""
echo "❌ SSH 접속 실패"
echo ""
echo "다음을 확인하세요:"
echo "1. 서버에 공개키가 올바르게 등록되었는지"
echo "2. 서버의 SSH 설정이 올바른지"
echo "3. 방화벽이 SSH 포트(22)를 허용하는지"
echo ""
echo "수동 테스트:"
echo " ssh $DEV_SERVER_USER@$DEV_SERVER_HOST"
fi