There are many password generators around, but since uniformly randomly generated passphrases are preferable in many instances, I'm specifically looking for a generator of random and secure passphrases. I would like to be able to use it off-line (for security reasons) under Linux.

It should:

generate the passphrases off-line

work on Linux (although cross-platform solutions are ultimately preferred)

be open-source

And optionally, it would be nice if it could:

be able to use dictionaries from different languages (i.e. not necessarily limit itself to English)

(in a perfect world) be able to mix dictionaries, and generate passphrases that are a mixture of languages (e.g. English and German)

Are you gravitating towards pass phrases so that you can remember them for multiple sites? If so, doesn't it make more sense to brainstorm them yourself? If you plan to use a password manager for the pass phrases, it would make more sense to just use long randomly generated passwords. A 50-character pass phrase is less secure than a randomly generated 50-character password. That XKCD is comparing long pass phrases to short passwords.
– ZeroFluxJan 23 '15 at 19:31

@ZeroFlux "doesn't it make more sense to brainstorm them yourself?"Not quite: "the selection of words must be (uniformly) random. If you ask humans to pick words at random, you get a heavy bias for concrete nouns. Such biases can and will be exploited." My interest is to come up with master passwords, something ultimately usable but secure, that I would use for instance to secure the password manager itself...
– landroniJan 23 '15 at 19:45

@ZeroFlux Ultimately any tool that can be used to output a selection of random words from a local dictionary would work just as nicely for this purpose, as long as the RNG is of good quality. But unfortunately this precludes the use of websites like the one you propose, or online passphrase generators like this one.
– landroniJan 23 '15 at 20:12

Ipsum

I also wanted a random word generator for creating passwords and couldn't find anything, so I created Ipsum. It is a bash script (intended to be used from the terminal). Ipsum satisfies these criteria:

Random: this uses /dev/urandom which apparently is a 'cryptographic PRNG'

Entropy: has option to display the entropy of the generated words

Usage

Here are some examples to illustrate how Ipsum works. It is also important to know that when translating, Ipsum displays the English word beneath the translated word and not all random words will translate. Once Ipsum generates a list of words (in whatever language you want), simply choose a subset to use as a password.

ipsum.sh, despite it's .sh extension is currently just a shell function, it lacks a first line #!/bin/bash, and a last line ipsum "$@".
– agcOct 5 '16 at 13:31

That was intentional, it has the .sh extension for syntax highlighting. I import my functions from my .bashrc so that they are easy to manage.
– NonlinearFruitOct 5 '16 at 13:43

The answer above should mention that ipsum() is a function which needs to be loaded first, i.e. . ipsum.sh ; impsum -h. Also, please correct me if I'm wrong, but doesn't .bashrc allocate it's own environmental memory for each instance of bash? If that's the case, then running several shells (in different tabs of a GUI terminal emulator) would load several redundant instances of ipsum().
– agcOct 5 '16 at 14:01

@agc I'll edit it. You are correct that it is a little wasteful, but I like the ease of setup and I also like the ability to easily organize.
– NonlinearFruitOct 5 '16 at 14:38