瀏覽代碼

Changing ssh public key

Bob Mottram 9 年之前
父節點
當前提交
00f2a60585
共有 1 個檔案被更改,包括 58 行新增0 行删除
  1. 58
    0
      src/freedombone-controlpanel

+ 58
- 0
src/freedombone-controlpanel 查看文件

@@ -128,6 +128,64 @@ function change_password {
128 128
     any_key
129 129
 }
130 130
 
131
+function change_ssh_public_key {
132
+    select_user
133
+    if [ ! $SELECTED_USERNAME ]; then
134
+        return
135
+    fi
136
+
137
+    if grep -Fxq "Admin user: $SELECTED_USERNAME" $COMPLETION_FILE; then
138
+        dialog --title "Change ssh public key" \
139
+               --backtitle "Freedombone Control Panel" \
140
+               --defaultno \
141
+               --yesno "\nThis is the administrator user.\n\nAre you sure you want to change the ssh public key for the administrator?" 10 60
142
+        sel=$?
143
+        case $sel in
144
+            1) return;;
145
+            255) return;;
146
+        esac
147
+    fi
148
+
149
+    data=$(tempfile 2>/dev/null)
150
+    trap "rm -f $data" 0 1 2 5 15
151
+    dialog --title "Change ssh public key for $SELECTED_USERNAME" \
152
+           --backtitle "Freedombone Control Panel" \
153
+           --inputbox "Paste the ssh public key below" 8 60 2>$data
154
+    sel=$?
155
+    case $sel in
156
+        0)
157
+            SSH_PUBLIC_KEY=$(<$data)
158
+            if [ "$SSH_PUBLIC_KEY" ]; then
159
+                if [ ${#SSH_PUBLIC_KEY} -gt 5 ]; then
160
+                    if [ -f "$SSH_PUBLIC_KEY" ]; then
161
+                        if [ ! -d /home/$SELECTED_USERNAME/.ssh ]; then
162
+                            mkdir /home/$SELECTED_USERNAME/.ssh
163
+                        fi
164
+                        cp $SSH_PUBLIC_KEY \
165
+                           /home/$SELECTED_USERNAME/.ssh/authorized_keys
166
+                        chown -R $SELECTED_USERNAME:$SELECTED_USERNAME \
167
+                              /home/$SELECTED_USERNAME/.ssh
168
+                        dialog --title "Change ssh public key" \
169
+                               --msgbox "ssh public key was installed" 6 40
170
+                    else
171
+                        if [[ "$SSH_PUBLIC_KEY" == "ssh-"* ]]; then
172
+                            if [ ! -d /home/$SELECTED_USERNAME/.ssh ]; then
173
+                                mkdir /home/$SELECTED_USERNAME/.ssh
174
+                            fi
175
+                            echo "$SSH_PUBLIC_KEY" > \
176
+                                 /home/$SELECTED_USERNAME/.ssh/authorized_keys
177
+                            chown -R $SELECTED_USERNAME:$SELECTED_USERNAME \
178
+                                  /home/$SELECTED_USERNAME/.ssh
179
+                            dialog --title "Change ssh public key" \
180
+                                   --msgbox "ssh public key was installed" 6 40
181
+                        fi
182
+                    fi
183
+                fi
184
+            fi
185
+            ;;
186
+    esac
187
+}
188
+
131 189
 function add_to_mailing_list {
132 190
     select_user
133 191
     if [ ! $SELECTED_USERNAME ]; then