Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Copy from your terminal into your local clipboard.
Perl VimL
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
vim
.gitignore
ARCH.md
COPYING
README.md
remotecopy
remotecopyserver

README.md

Remote Copy

Overview

Taking something from a remote shell and copying into your local pasteboard would be very useful. This blog post details one solution:

http://seancoates.com/blogs/remote-pbcopy

The big caveat at the bottom is that this particular solution is not secure. Anyone who figure out the port and writes to it puts something in your pasteboard.

This project aims to address that problem with a little extra logic. See ARCH.md for details.

Installation

Step 1. Run the remotecopyserver script on your local laptop or desktop.

NOTE: Be sure to run remotecopyserver outside of a tmux session. Unless you've patched it to work around the reattach-to-user-namespace issue, remotecopyserver won't work correctly.

This can either be done manually:

$ remotecopyserver &

Or you can use the built-in LaunchAgent support. This will start the remotecopyserver process and make sure it's started whenever you reboot:

$ remotecopyserver -x start

Step 2. Configure SSH to forward the remotecopyserver port to your remote machine.

The default port is 12345 (see Configuration on how to change that). Remotecopy works by connecting to the (localhost) port on the remote machine, so it is necessary to forward the local port over your SSH connection.

To forward for a single session:

$ ssh server.com -R 12345:localhost:12345

Or, to forward for all sessions to that server, put a snippet like this into your .ssh/config file:

Host server.com
    RemoteForward 12345 localhost:12345

Step 3. Test out the remote copy connection

After connecting to the remote machine, run remotecopy foo to ensure that the port forward and remotecopyserver are running correctly. If everything is working, you should be prompted for the secret. Just paste and 'foo' will be copied into your clipboard.

$ remotecopy foo
Input secret:
rc-aa474a07fbb93fe29450b6618110bdc2
$

If it doesn't work, try running telnet localhost 12345 on your remote machine to make sure the port is forwarded correctly. It should look like this (see the "HELLO 0.1" at the bottom?):

$ telnet localhost 12345
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HELLO 0.1

Configuration

To change the port that remotecopyserver listens on and remotecopy connects to, just put this into ~/.remotecopyrc:

port = 52413

Note: this file should be present on both ends so that they agree on the port. This is easy if you manage your dotfiles with git. I suggest using dfm, and here is a starter repository.

More information

First, there's the introductory blog post, and then a follow up a while later.

Something went wrong with that request. Please try again.