si9ma
2/21/2019 - 10:50 AM

send data to local clipboard from a remote SSH session

send data to local clipboard from a remote SSH session

export SSH_FORWARD_PORT=2222
export SSH_CB_CONF='.ssh.cb.client.user' # ssh clipboard configuration

# ssh wrapper
ssh(){
	# must -t, in order to run zsh again
	# refer : https://unix.stackexchange.com/questions/119894/single-command-to-login-to-ssh-and-run-program
	# 这里有BUG,多客户端登录服务器的时候,配置会被覆盖
	# TODO 修复BUG
	[ "`uname`" = "Darwin" ] && /usr/bin/env ssh -t "$@" -R ${SSH_FORWARD_PORT}:localhost:22 "echo $USER > \$HOME/$SSH_CB_CONF && zsh" && exit # just work on macos
	/usr/bin/env ssh $@
}

# copy file to client clipboard
# refer : https://stackoverflow.com/questions/1152362/how-to-send-data-to-local-clipboard-from-a-remote-ssh-session
cb() {
    client_user=`cat $HOME/$SSH_CB_CONF`
    ssh-copy-id $client_user@localhost -p $SSH_FORWARD_PORT > /dev/null 2>&1
    ssh $client_user@localhost -p $SSH_FORWARD_PORT pbcopy > /dev/null 2>&1
}

## demo
ssh root@remote 
cat main.go | cb