42 lines
1.0 KiB
Plaintext
42 lines
1.0 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
#--------------------------------------------------------------------#
|
||
|
#File: ssh-authorize-host
|
||
|
#
|
||
|
#Description: Add a public key to a remote SSH-capable host.
|
||
|
#
|
||
|
#Package: AniNIX::MiscScripts
|
||
|
#Copyright: WTFPL
|
||
|
#
|
||
|
#Author: DarkFeather
|
||
|
#Changelog by editor:
|
||
|
#--------------------------------------------------------------------#
|
||
|
|
||
|
|
||
|
# Show the usage for this script.
|
||
|
function usage {
|
||
|
echo "Usage: $0 host [ pubkeyfile ]"
|
||
|
}
|
||
|
|
||
|
# Create the initial SSH command.
|
||
|
function initialSSHCommand() {
|
||
|
echo 'mkdir -p ${HOME}/.ssh'
|
||
|
echo 'touch ${HOME}/.ssh/authorized_keys'
|
||
|
echo 'chmod 0700 ${HOME} ${HOME}/.ssh'
|
||
|
echo 'chmod 0600 ${HOME}/.ssh/authorized_keys'
|
||
|
echo 'chown -R `whoami`":" ${HOME}'
|
||
|
echo 'cat > ${HOME}/.ssh/authorized_keys'
|
||
|
}
|
||
|
|
||
|
|
||
|
# Parse the CLI arguments.
|
||
|
host="$1"
|
||
|
if [ -z "$host" ]; then usage; exit 1; fi
|
||
|
pubkeyfile="$2"
|
||
|
if [ -z "$pubkeyfile" ] || [ ! -f "$pubkeyfile" ]; then
|
||
|
pubkeyfile="${HOME}/.ssh/id_rsa.pub"
|
||
|
fi
|
||
|
|
||
|
# Execute on the remote host.
|
||
|
(initialSSHCommand; cat "$pubkeyfile") | ssh "$host" /bin/bash
|